home *** CD-ROM | disk | FTP | other *** search
/ Tech Arsenal 1 / Tech Arsenal (Arsenal Computer).ISO / tek-04 / inter36b.zip / INTERRUP.G < prev    next >
Text File  |  1993-08-01  |  245KB  |  6,875 lines

  1. Interrupt List, part 7 of 10
  2. This compilation is Copyright (c) 1989,1990,1991,1992,1993 Ralf Brown
  3. --------N-2F8000-----------------------------
  4. INT 2F - EASY-NET - INSTALLATION CHECK
  5.     AX = 8000h
  6. Return: AL = 00h not installed
  7.          FFh installed
  8. Program: EASY-NET is a shareware two-machine serial-port network
  9. --------N-2F8000-----------------------------
  10. INT 2F - Nanosoft, Inc. TurboNET server - INSTALLATION CHECK
  11.     AX = 8000h
  12. Return: AL = FFh if installed
  13.         BX = CS of resident code
  14.         CX = ??? (03FCh)
  15. Program: TurboNET is a NetBIOS-based file redirector and server; a
  16.       demonstration version may be downloaded from Nanosoft's BBS
  17. SeeAlso: AX=8100h
  18. ----------2F8000-----------------------------
  19. INT 2F - ASCII v2.00 - INSTALLATION CHECK
  20.     AX = 8000h
  21.     DS:SI -> 4-byte signature (11h 43h 53h 10h)
  22. Return: AL = status
  23.         01h installed, but signature did not match
  24.         FFh installed, signature matches
  25.         ES:DI -> resident copy of signature (may be followed by data)
  26. Program: ASCII is a popup ASCII table by Nick Zaikin, Jr.
  27. Note:    the interface used by this program appears to be a general-purpose
  28.       interface which may be shared by multiple programs, so other programs
  29.       may also support this call with differing signatures
  30. SeeAlso: AX=8001h"ASCII",AX=8002h"ASCII"
  31. --------F-2F8000DX0000-----------------------
  32. INT 2F - FaxBIOS interface - INSTALLATION CHECK
  33.     AX = 8000h
  34.     DX = 0000h
  35.     DI = 0000h
  36. Return: AL = FFh if installed
  37.     DX:DI -> signature "FaxBiosjpc"
  38. Note:    FaxBIOS may use any multiplex number from 80h through FFh; to determine
  39.       whether it is installed, it is necessary to poll all multiplex
  40.       numbers for one which returns the above signature
  41. SeeAlso: AH=2Ah,AX=80FBh
  42. --------N-2F8001-----------------------------
  43. INT 2F - Nanosoft, Inc. TurboNET server - ???
  44.     AX = 8001h
  45.     DS:SI -> 16-byte buffer for ???
  46. Return: AH = status
  47.         00h successful
  48.         01h error (TurboNET busy)
  49. Note:    makes NetBIOS calls
  50. ----------2F8001-----------------------------
  51. INT 2F - ASCII v2.00 - INSTALLATION VERIFICATION
  52.     AX = 8001h
  53.     DS:SI -> ASCIZ signature string "ASCII 2.00 by Nick Zaikin Jr."
  54. Return: BX = 0000h if signature did not match
  55.        = instance number??? if signature matched
  56.            ES:DI -> ??? (same as returned by AX=8000h)
  57. Note:    the interface used by this program appears to be a general-purpose
  58.       interface which may be shared by multiple programs, so other programs
  59.       may also support this call with differing signatures
  60. SeeAlso: AX=8000h"ASCII",AX=8002h"ASCII"
  61. ----------2F8002-----------------------------
  62. INT 2F - ASCII v2.00 - ???
  63.     AX = 8002h
  64.     BX = instance number??? (value returned by AX=8001h)
  65. Return: ES:DI -> ??? (same as returned by AX=8000h) if instance number matches
  66.     call chained if instance number did not match
  67. SeeAlso: AX=8000h"ASCII",AX=8001h"ASCII"
  68. --------F-2F80FB-----------------------------
  69. INT 2F - FaxBIOS interface - COMMAND SUBMISSION
  70.     AX = 80FBh
  71.     BX = function number (see below)
  72.     DX:DI -> command buffer (see below)
  73. Return: AL = FFh if submitted OK
  74.     CX = result code (see below)
  75. Note:    FaxBIOS may use any multiplex number from 80h through FFh
  76. SeeAlso: AX=8000h"FaxBIOS",AX=CBDDh
  77.  
  78. Values for function number:
  79.  0001h    SYS_LOGIN
  80.  0002h    SYS_LOGOUT
  81.  0003h    SYS_GET_FAXAPP_INFO
  82.  0004h    STAT_IO_GET
  83.  0005h    STAT_FAXBIOS_GET
  84.  0006h    PDIR_OPEN
  85.  0007h    PDIR_CLOSE
  86.  0008h    PDIR_READ_PERSON
  87.  0009h    PDIR_PARTIAL_READ
  88.  000Ah    PDIR_READ_GROUP
  89.  000Bh    PDIR_READ_MEMBER_LIST
  90.  000Ch    PDIR_WRITE_PERSON
  91.  000Dh    PDIR_WRITE_GROUP
  92.  000Eh    PDIR_DELETE_PERSON
  93.  000Fh    PDIR_DELETE_GROUP
  94.  0010h    PDIR_READ_GROUP_LIST
  95.  0011h    PDIR_IN_GROUP
  96.  0012h    PDIR_OUT_GROUP
  97.  0013h    SCHED_OPEN
  98.  0014h    SCHED_ADD_DEST
  99.  0015h    SCHED_ADD_FILE
  100.  0016h    SCHED_SET_PARAMS
  101.  0017h    SCHED_CANCEL
  102.  0018h    SCHED_CLOSE
  103.  0019h    SLOG_OPEN
  104.  001Ah    SLOG_CLOSE
  105.  001Bh    SLOG_SHORT_ENV_STAT
  106.  001Ch    SLOG_LONG_ENV_STAT
  107.  001Dh    SLOG_DEST_STAT
  108.  001Eh    SLOG_FILE_STAT
  109.  001Fh    SLOG_CANCEL_ENV
  110.  0020h    RLOG_OPEN
  111.  0021h    RLOG_CLOSE
  112.  0022h    RLOG_READ
  113.  0023h    GRAPH_GET_FILE_TYPE
  114.  0024h    GRAPH_EXPORT_FILE
  115.  0025h    GRAPH_GET_LAYOUT_INFO
  116.  0026h    GRAPH_CREATE_FILE
  117.  0027h    GRAPH_CLOSE_FILE
  118.  0028h    GRAPH_CREATE_PAGE
  119.  0029h    GRAPH_WRITE
  120.  002Ah    GRAPH_END_PAGE
  121.  002Bh    GRAPH_OPEN_FILE
  122.  002Ch    GRAPH_GOTO_PAGE
  123.  002Dh    GRAPH_READ
  124.  002Eh    IOCTL_GET
  125.  002Fh    IOCTL_SET
  126.  0030h    IOCTL_ANSWER_FAX
  127.  0031h    IOCTL_DIAL
  128.  
  129. Values for result code:
  130.  0000h    successful
  131.  0001h    not prepared or servicing another client (busy)
  132.  0002h    call failed due to sharing (LOCKED)
  133.  0003h    logged-in client limit reached (FULL)
  134.  0004h    transport denied (TRANSPORT_DENIED)
  135.  0005h    not implemented (NOT_IMPLEMENTED)
  136.  0006h    aborted while in progress (ABORTED)
  137.  0007h    permissions denied (PERMISSION_DENIED)
  138.  0008h    requested data is no longer valid (NO_LONGER_VALID)
  139.  0080h    unspecified system error occurred
  140.  0081h    an internal file was not found
  141.  0082h    an internal file could not be created
  142.  0083h    an internal file could not be opened
  143.  0084h    an internal file could not be closed
  144.  0085h    error occurred writing to an internal file
  145.  0086h    error occurred reading from an internal file
  146.  0087h    bad or corrupted file encountered
  147.  0088h    an access violation occurred
  148.  0089h    an internal file is empty
  149.  008Ah    insufficient memory to process request
  150.  008Bh    FaxBIOS was unable to issue a handle
  151.  008Ch    an error internal to FaxBIOS occurred
  152.  008Dh    no room on disk
  153.  0100h    unspecified error accessing client file
  154.  0101h    file not found
  155.  0102h    creation fault
  156.  0103h    open fault
  157.  0104h    close fault
  158.  0105h    write fault
  159.  0106h    read fault
  160.  0107h    file corrupted
  161.  0108h    access violation
  162.  0109h    empty file
  163.  0200h    unspecified argument error
  164.  0201h    bad function
  165.  0202h    bad option
  166.  0203h    bad structure size
  167.  0204h    bad buffer size
  168.  0205h    bad client ID
  169.  0300h    unspecified error with token
  170.  0301h    cover sheet token was invalid
  171.  0302h    logo token was invalid
  172.  0303h    signature token was invalid
  173.  0304h    font token was invalid
  174.  0305h    phone directory token was invalid
  175.  0306h    outbound route token was invalid
  176.  0307h    priority token was invalid
  177.  0308h    sort token was invalid
  178.  0309h    billing token was invalid
  179.  0400h    unspecified handle error
  180.  0401h    bad Phone Directory handle
  181.  0402h    bad scheduling handle
  182.  0403h    bad read send log handle
  183.  0404h    bad read receive log handle
  184.  0405h    bad graphics handle
  185.  0500h    data passed in structure was invalid
  186.  0501h    name field given is invalid
  187.  0502h    phone number given is invalid
  188.  0503h    poll code submitted is invalid
  189.  0504h    file type constant was invalid
  190.  0505h    BFT constant not defined or supported
  191.  0506h    resolution not defined or supported
  192.  0507h    page length not defined or supported
  193.  0508h    page width not defined or supported
  194.  0509h    date & time requested are ridiculous
  195.  050Ah    Subject text was not an ASCIIZ string
  196.  050Bh    From text was not an ASCIIZ string
  197.  050Ch    requested envelope ID was not found
  198.  050Dh    requested envelope ID is not valid
  199.  050Eh    envelope requested was not found
  200.  050Fh    destination index is out of range
  201.  0510h    file index is out of range
  202.  0511h    index into receive log is out of range
  203.  0512h    file name specified was incomplete or invalid
  204.  0513h    page selected was out of range
  205.  0514h    bit width more than byte width
  206.  0515h    mode for open is not defined
  207.  0516h    person index is out of range
  208.  0517h    person ID is out of range
  209.  0518h    group index out of range or invalid
  210.  0519h    group ID out of range or invalid
  211.  051Ah    range of indices to read is invalid
  212.  051Bh    group name given is invalid
  213.  051Ch    field_to_use is badly specified
  214.  051Dh    predicate invalid for field specified
  215.  0600h    unspecified client procedure error
  216.  0601h    device of interest is not present
  217.  0602h    device of interest has been removed
  218.  0603h    device of interest is not responding
  219.  0604h    device of interest is disabled
  220.  0605h    could not dial because device was in use
  221.  0606h    maximum destination limit exceeded
  222.  0607h    maximum file limit exceeded
  223.  0608h    scheduling closed with no destination
  224.  0609h    scheduling closed with no files or poll
  225.  060Ah    scheduling closed with no parameters specified
  226.  060Bh    file type specified does not match file
  227.  060Ch    file type specified is not supported
  228.  060Dh    file submitted is not exportable
  229.  060Eh    file type specified is not imageable
  230.  060Fh    error converting file
  231.  0610h    envelope could not be cancelled
  232.  0611h    Phone Directory is full
  233.  0612h    record is already in the Phone Directory
  234.  0613h    selected group in Phone Directory is full
  235.  0614h    person is already in the group
  236.  0615h    person is not in the group & cannot be removed
  237.  0616h    a graphics file to be created already exists
  238.  0617h    a grphics file to be read is empty
  239.  0618h    GRAPH_CREATE_PAGE called before GRAPH_END_PAGE
  240.  0619h    graph read or write attempted without goto or create
  241.  061Ah    graph page contains no data
  242.  061Bh    Phone Directory is already open for this client
  243.  061Ch    schedule log is already open for this client
  244.  061Dh    receive log is aready open for this client
  245.  061Eh    Phone Directory function requires write mode
  246.  0800h    denied exclusive use of the API
  247.  
  248. Format of SYS_LOGIN command buffer:
  249. Offset    Size    Description
  250.  00h    WORD    structure size
  251.  02h    WORD    function number
  252.  04h    WORD    return code
  253.  06h    WORD    client ID
  254.  08h    WORD    API Major Version
  255.  0Ah    WORD    API Minor Version
  256.  0Ch    DWORD    reserved for manufacturer's use
  257.  10h 22 BYTEs    manufacturer's ID
  258.  26h    WORD    highest possible device number
  259.  28h    WORD    maximum destinations per envelope
  260.  2Ah    WORD    maximum files per envelope
  261.  2Ch    WORD    FaxBIOS capabilities (see below)
  262.  2Eh    DWORD    T.30 capabilities (see below)
  263.  32h    WORD    IPC handle
  264.  34h    DWORD    amount of memory needed to load
  265.  38h    WORD    scope (00h for public, nonzero for private)
  266.  3Ah  6 BYTEs    future expansion
  267.  40h    WORD    structure size
  268.  
  269. Bitfields for FaxBIOS capabilities:
  270.  bit 0    transmit supported
  271.  bit 1    receive supported
  272.  bit 2    IOCTL supported
  273.  bit 3    IOCTL_DIAL supported
  274.  bit 4    IOCTL_ANSWER_FAX supported
  275.  bit 5    manual transmit supported
  276.  bit 6    optional phone services supported
  277.  bit 7    canonical phone objects
  278.  bit 8    seam with next supported
  279.  
  280. Bitfields for T.30 capabilities:
  281.  bit 0    low vertical resolution (minimum)
  282.  bit 1    high vertical resolution
  283.  bit 2    page width 107mm (4.21 in)
  284.  bit 3    page width 151mm (5.91 in)
  285.  bit 4    page width 215mm (8.46 in) (minimum)
  286.  bit 5    page width 255mm (10.04 in)
  287.  bit 6    page width 303mm (11.93 in)
  288.  bit 7    unused
  289.  bit 8    page length 297mm (11.69 in) (minimum)
  290.  bit 9    page length 364mm (14.33 in)
  291.  bit 10 page length 279mm (11 in)
  292.  bit 11 page length unlimited
  293.  bit 12 Group 4 resolution 300x300
  294.  bit 13 Group 4 resolution 400x400
  295.  bit 14 able to respond to poll from remote
  296.  bit 15 able to poll remote
  297.  bit 16 binary file transfer supported
  298.  
  299. Format of SYS_LOGOUT command buffer:
  300. Offset    Size    Description
  301.  00h    WORD    structure size
  302.  02h    WORD    function number
  303.  04h    WORD    return code
  304.  06h    WORD    client ID
  305.  08h    DWORD    client tag (for client's internal use)
  306.  0Ch  6 BYTEs    future expansion
  307.  12h    WORD    structure size
  308.  
  309. Format of SYS_GET_FAXAPP_INFO command buffer:
  310. Offset    Size    Description
  311.  00h 12 BYTEs    common data (see SYS_LOGOUT above)
  312.  0Ch 80 BYTEs    FaxBIOS data
  313.  5Ch 80 BYTEs    default cover
  314.  ACh 80 BYTEs    default logo
  315.  FCh 80 BYTEs    default signature
  316. 14Ch 80 BYTEs    default font 10
  317. 19Ch 80 BYTEs    default font 165
  318. 1ECh 80 BYTEs    default user font
  319. 23Ch 80 BYTEs    default Pdir
  320. 28Ch 80 BYTEs    default sort
  321. 2DCh 10 BYTEs    default bill
  322. 2E6h 10 BYTEs    default route
  323. 2F0h 40 BYTEs    default cover sheet form
  324. 318h 34 BYTEs    valid dial characters
  325. 33Ah  6 BYTEs    local country code
  326. 340h  6 BYTEs    local city or area code
  327. 346h  6 BYTEs    future expansion
  328. 34Ch    WORD    structure size
  329.  
  330. Format of STAT_IO_GET command buffer:
  331. Offset    Size    Description
  332.  00h 12 BYTEs    common data (see SYS_LOGOUT above)
  333.  0Ch    WORD    device number
  334.  0Eh    WORD    current activity
  335.  10h    WORD    number of rings (if ringing)
  336.  12h    WORD    number of fascimiles transmitted
  337.  14h    WORD    number of fascimiles received
  338.  16h    WORD    status of last transmission
  339.  18h    WORD    envelope number of last transmission
  340.  1Ah    WORD    index of last destination in envelope
  341.  1Ch    WORD    status of last reception
  342.  1Eh    WORD    current page (if session in progress)
  343.  20h 80 BYTEs    current file
  344.  70h104 BYTEs    remote number
  345.  D8h 20 BYTEs    last name
  346.  ECh 20 BYTEs    first name
  347. 100h 32 BYTEs    company name
  348. 120h 32 BYTEs    notes
  349. 140h    WORD    current envelope ID (if sending)
  350. 142h    WORD    total pages in transmission (if sending)
  351. 144h  6 BYTEs    future expansion
  352. 14h    WORD    structure size
  353.  
  354. Format of STAT_FAXBIOS_GET command buffer:
  355. Offset    Size    Description
  356.  00h 12 BYTEs    common data (see SYS_LOGOUT above)
  357.  0Ch    WORD    status ID
  358.  0Eh    WORD    currenty FaxBIOS function number
  359.  10h    WORD    current Client ID being serviced
  360.  12h    WORD    number of things to do
  361.  14h    WORD    number of them done
  362.  16h    WORD    number of pages to do (if any)
  363.  18h    WORD    number of them done
  364.  1Ah    WORD    number of files to do
  365.  1Ch    WORD    number of them done
  366.  1Eh 80 BYTEs    current File
  367.  6Eh    WORD    0 if all devices are idle
  368.  70h    WORD    number of fascimiles transmitted
  369.  72h    WORD    number of fascimiles received
  370.  74h    WORD    status of last transmission in system
  371.  76h    WORD    envelope ID of last transmission
  372.  78h    WORD    index of last destination in envelope
  373.  7Ah    WORD    status of last reception in system
  374.  7Ch    DWORD    time of next transmission
  375.  80h  6 BYTEs    future expansion
  376.  86h    WORD    structure size
  377.  
  378. Format of PDIR_OPEN command buffer:
  379. Offset    Size    Description
  380.  00h 12 BYTEs    common data (see SYS_LOGOUT above)
  381.  0Ch 80 BYTEs    Phone Directory token
  382.  5Ch 80 BYTEs    sort order token
  383.  ACh    WORD    open Mode (0 = read, 1 = write)
  384.  AEh    WORD    Phone Directory handle
  385.  B0h    WORD    number of people
  386.  B2h    WORD    number of groups
  387.  B4h    WORD    bitmap of fields supported by partial read
  388.  B6h  6 BYTEs    future expansion
  389.  BCh    WORD    structure size
  390.  
  391. Format of PDIR_CLOSE command buffer:
  392. Offset    Size    Description
  393.  00h 12 BYTEs    common data (see SYS_LOGOUT above)
  394.  0Ch    WORD    Phone Directory handle
  395.  0Eh  6 BYTEs    future expansion
  396.  14h    WORD    structure size
  397.  
  398. Format of PDIR_READ_PERSON command buffer:
  399. Offset    Size    Description
  400.  00h 12 BYTEs    common data (see SYS_LOGOUT above)
  401.  0Ch    WORD    Phone Directory handle
  402.  0Eh    WORD    retrieve by index
  403.  10h    WORD    person ID or index
  404.  12h    WORD    how many groups person is in
  405.  14h    WORD    person ID
  406.  16h 20 BYTEs    last name
  407.  2Ah 20 BYTEs    first name
  408.  3Eh 32 BYTEs    company
  409.  5Eh 32 BYTEs    notes
  410.  7Eh  6 BYTEs    FAX country code
  411.  84h  6 BYTEs    FAX city/area code
  412.  8Ah 14 BYTEs    FAX local number
  413.  98h 14 BYTEs    FAX extension
  414.  A6h 24 BYTEs    reserved
  415.  BEh  6 BYTEs    voice country code
  416.  C4h  6 BYTEs    voice city/area code
  417.  CAh 14 BYTEs    voice local number
  418.  D8h 14 BYTEs    voice extension
  419.  E6h 24 BYTEs    reserved
  420.  FEh 10 BYTEs    outbound routing information
  421. 108h 10 BYTEs    billing information, credit card etc
  422. 112h    DWORD    remote FAX capabilities
  423. 116h 21 BYTEs    T.30 poll code of FAX number
  424. 12Bh 15 BYTEs    reserved
  425. 13Ah  6 BYTEs    future expansion
  426. 140h    WORD    structure size
  427.  
  428. Format of SCHED_OPEN, SCHED_CANCEL command buffer:
  429. Offset    Size    Description
  430.  00h 12 BYTEs    common data (see SYS_LOGOUT above)
  431.  0Ch    WORD    scheduler handle
  432.  0Eh  6 BYTEs    future expansion
  433.  14h    WORD    structure size
  434.  
  435. Format of SCHED_ADD_DEST command buffer:
  436. Offset    Size    Description
  437.  00h 12 BYTEs    common data (see SYS_LOGOUT above)
  438.  0Ch    WORD    schedule handle
  439.  0Eh    WORD    device number if manual send wanted
  440.  10h    WORD    non-zero if poll desired
  441.  12h    WORD    person ID
  442.  14h 20 BYTEs    last name
  443.  28h 20 BYTEs    first name
  444.  3Ch 32 BYTEs    company
  445.  5Ch 32 BYTEs    notes
  446.  7Ch  6 BYTEs    FAX country code
  447.  82h  6 BYTEs    FAX city/area code
  448.  88h 14 BYTEs    FAX local number
  449.  96h 14 BYTEs    FAX extension
  450.  A4h 24 BYTEs    reserved
  451.  BCh  6 BYTEs    voice country code
  452.  C2h  6 BYTEs    voice city/area code
  453.  C8h 14 BYTEs    voice local number
  454.  D6h 14 BYTEs    voice extension
  455.  E4h 24 BYTEs    reserved
  456.  FCh 10 BYTEs    outbound routing information
  457. 106h 10 BYTEs    billing information, credit card etc
  458. 110h    DWORD    remote FAX capabilities
  459. 114h 21 BYTEs    T.30 poll code of FAX number
  460. 129h 15 BYTEs    reserved
  461. 138h  6 BYTEs    future expansion
  462. 13Eh    WORD    structure size
  463.  
  464. Format of SCHED_ADD_FILE command buffer:
  465. Offset    Size    Description
  466.  00h 12 BYTEs    common data (see SYS_LOGOUT above)
  467.  0Ch    WORD    schedule handle
  468.  0Eh    WORD    file type
  469.         0000h unidentified
  470.         0001h native file format
  471.         0002h ASCII
  472.         0003h FaxBIOS Tiff Class F
  473.  10h 80 BYTEs    file name
  474.  60h 80 BYTEs    font token
  475.  B0h    WORD    conversion options bitmap
  476.  B2h    WORD    resolution
  477.         0000h standard 98 lines per inch, 204 dpi
  478.         0001h fine 196 lines per inch, 204 dpi
  479.         0002h Group4 300 dpi
  480.         0003h Group4 400 dpi
  481.  B4h    WORD    page length
  482.         0000h 279 mm (11 in)
  483.         0001h 297 mm (11.69 in)
  484.         0002h 364 mm (14.33 in)
  485.         0003h unlimited
  486.  B6h    WORD    page width
  487.         0000h 215 mm (8.46 in)
  488.         0001h 255 mm (10.04 in)
  489.         0002h 303 mm (11.93 in)
  490.         0003h 151 mm (5.91 in)
  491.         0004h 107 mm (4.21 in)
  492.  B8h    WORD    binary file transfer specification
  493.         0000h only as FAX
  494.         0001h only as file (for non-faxable files)
  495.         0002h as file when possible else FAX
  496.  BAh    WORD    seam flag (nonzero for seam with next)
  497.  BCh    WORD    delete flag (nonzero to delete when done)
  498.  BEh  6 BYTEs    future expansion
  499.  C4h    WORD    structure size
  500.  
  501. Format of SCHED_SET_PARAMS command buffer:
  502. Offset    Size    Description
  503.  00h 12 BYTEs    common data (see SYS_LOGOUT above)
  504.  0Ch    WORD    scheduler handle
  505.  0Eh    DWORD    time to send
  506.  10h 10 BYTEs    priority token
  507.  1Ch 80 BYTEs    logo file token
  508.  6Ch 80 BYTEs    signature file token
  509.  BCh 80 BYTEs    cover page token
  510. 10Ch 40 BYTEs    Subject text
  511. 134h 40 BYTEs    From text
  512. 15Ch    WORD    user ID
  513. 15Eh  6 BYTEs    future expansion
  514. 164h    WORD    structure size
  515.  
  516. Format of SCHED_CLOSE command buffer:
  517. Offset    Size    Description
  518.  00h 12 BYTEs    common data (see SYS_LOGOUT above)
  519.  0Ch    WORD    scheduler handle
  520.  0Eh    WORD    envelope ID generated
  521.  10h  6 BYTEs    future expansion
  522.  16h    WORD    structure size
  523.  
  524. Format of SLOG_OPEN, SLOG_CLOSE, RLOG_OPEN, RLOG_CLOSE command buffer:
  525. Offset    Size    Description
  526.  00h 12 BYTEs    common data (see SYS_LOGOUT above)
  527.  0Ch    WORD    log handle
  528.  0Eh    WORD    number of entries
  529.  10h  6 BYTEs    future expansion
  530.  16h    WORD    structure size
  531.  
  532. Format of GRAPH_GET_FILE_TYPE command buffer:
  533. Offset    Size    Description
  534.  00h 12 BYTEs    common data (see SYS_LOGOUT above)
  535.  0Ch 80 BYTEs    filename
  536.  5Ch    WORD    file type
  537.         0000h unidentified
  538.         0001h native file format
  539.         0002h ASCII
  540.         0003h FaxBIOS Tiff Class F
  541.  5Eh    WORD    bitmap of supported capabilities
  542.  60h  6 BYTEs    future expansion
  543.  66h    WORD    structure size
  544.  
  545. Format of GRAPH_CREATE_FILE command buffer:
  546. Offset    Size    Description
  547.  00h 12 BYTEs    common data (see SYS_LOGOUT above)
  548.  0Ch 80 BYTEs    filename
  549.  5Ch    WORD    graph handle
  550.  5Eh  6 BYTEs    future expansion
  551.  64h    WORD    structure size
  552.  
  553. Format of GRAPH_CLOSE_FILE, GRAPH_END_PAGE command buffer:
  554. Offset    Size    Description
  555.  00h 12 BYTEs    common data (see SYS_LOGOUT above)
  556.  0Ch    WORD    graph handle
  557.  0Eh  6 BYTEs    future expansion
  558.  14h    WORD    structure size
  559.  
  560. Format of GRAPH_CREATE_PAGE command buffer:
  561. Offset    Size    Description
  562.  00h 12 BYTEs    common data (see SYS_LOGOUT above)
  563.  0Ch    WORD    graph handle
  564.  0Eh    WORD    resolution
  565.  10h    WORD    page width
  566.  12h  6 BYTEs    future expansion
  567.  18h    WORD    structure size
  568.  
  569. Format of GRAPH_WRITE_PAGE command buffer:
  570. Offset    Size    Description
  571.  00h 12 BYTEs    common data (see SYS_LOGOUT above)
  572.  0Ch    WORD    graph handle
  573.  0Eh    DWORD    pointer to storage for image
  574.  12h    WORD    band height in lines
  575.  14h    WORD    width of page image in bytes
  576.  16h    WORD    facsimile page width constant
  577.  18h    WORD    width of page image in bits
  578.  1Ah    WORD    number of bytes actually processed
  579.  1Ch  6 BYTEs    future expansion
  580.  22h    WORD    structure size
  581.  
  582. Format of GRAPH_OPEN_FILE command buffer:
  583. Offset    Size    Description
  584.  00h 12 BYTEs    common data (see SYS_LOGOUT above)
  585.  0Ch 80 BYTEs    filename
  586.  5Ch    WORD    file type
  587.  5Eh    WORD    graph handle
  588.  60h    WORD    number of pages
  589.  62h  6 BYTEs    future expansion
  590.  68h    WORD    structure size
  591.  
  592. Format of GRAPH_GOTO_PAGE command buffer:
  593. Offset    Size    Description
  594.  00h 12 BYTEs    common data (see SYS_LOGOUT above)
  595.  0Ch    WORD    graph handle
  596.  0Eh    WORD    page number
  597.  10h    WORD    vertical resolution
  598.  12h    WORD    page width
  599.  14h    DWORD    page length
  600.  18h  6 BYTEs    future expansion
  601.  1Eh    WORD    structure size
  602.  
  603. Format of GRAPH_READ_PAGE command buffer:
  604. Offset    Size    Description
  605.  00h 12 BYTEs    common data (see SYS_LOGOUT above)
  606.  0Ch    WORD    graph handle
  607.  0Eh    DWORD    pointer to storage for image
  608.  12h    WORD    band height in lines
  609.  14h    WORD    width of page image in bytes
  610.  16h    WORD    facsimile page width constant
  611.  18h    WORD    width of page image in bits
  612.  1Ah    WORD    number of bytes actually processed
  613.  1Ch  6 BYTEs    future expansion
  614.  22h    WORD    structure size
  615.  
  616. Format of IOCTL_ANSWER_FAX command buffer:
  617. Offset    Size    Description
  618.  00h 12 BYTEs    common data (see SYS_LOGOUT above)
  619.  0Ch    WORD    device number
  620.  0Eh  6 BYTEs    future expansion
  621.  14h    WORD    structure size
  622.  
  623. Format of IOCTL_DIAL command buffer:
  624. Offset    Size    Description
  625.  00h 12 BYTEs    common data (see SYS_LOGOUT above)
  626.  0Ch    WORD    device number
  627.  0Eh  6 BYTEs    country code
  628.  14h  6 BYTEs    city or area code
  629.  1Ah 14 BYTEs    local number
  630.  28h 14 BYTEs    extension
  631.  36h 14 BYTEs    reserved
  632.  4Eh  6 BYTEs    future expansion
  633.  54h    WORD    structure size
  634. --------N-2F8100-----------------------------
  635. INT 2F U - Nanosoft, Inc. TurboNET redirector - INSTALLATION CHECK
  636.     AX = 8100h
  637. Return: AL = FFh if installed
  638. Program: TurboNET is a NetBIOS-based file redirector and server; a
  639.       demonstration version may be downloaded from Nanosoft's BBS
  640. SeeAlso: AX=8000h"TurboNET"
  641. --------N-2F8101-----------------------------
  642. INT 2F U - Nanosoft, Inc. TurboNET redirector - ???
  643.     AX = 8101h
  644. Return: AL = ???
  645.     DL = ???
  646. --------N-2F8102-----------------------------
  647. INT 2F U - Nanosoft, Inc. TurboNET redirector - ???
  648.     AX = 8102h
  649. Return: AL = ???
  650.     DL = ???
  651. --------N-2F8103-----------------------------
  652. INT 2F U - Nanosoft, Inc. TurboNET redirector - GET MACHINE NAME???
  653.     AX = 8103h
  654.     ES:DI -> 17-byte buffer
  655. Return: buffer filled
  656. --------N-2F8104-----------------------------
  657. INT 2F U - Nanosoft, Inc. TurboNET redirector - ???
  658.     AX = 8104h
  659.     BL = ???
  660.     BH = ???
  661.     CX = ???
  662.     DX = ???
  663.     DS:SI -> 16-byte buffer containing ???
  664. Return: AL = 00h ???
  665. --------N-2F8105-----------------------------
  666. INT 2F U - Nanosoft, Inc. TurboNET redirector - ???
  667.     AX = 8105h
  668.     CX = ??? (don't change current value if 0000h)
  669.     DX = ??? (don't change current value if 0000h)
  670. Return: AL = 00h successful
  671. --------s-2F8200-----------------------------
  672. INT 2F - RESPLAY - SAMPLE/PLAYBACK
  673.     AX = 8200h
  674.     DX:DI -> start of sample space
  675.     CX:BX = length in bytes
  676. Return: AX = status
  677.         1000h successful
  678.         2000h not initialized (see AX=8210h)
  679.         other RESPLAY not installed
  680. Program: RESPLAY is a freeware sound sampling/playback utility by Mark J. Cox
  681. SeeAlso: AX=8201h,AX=8210h
  682. --------G-2F8200-----------------------------
  683. INT 2F U - Nanosoft, Inc. CAPDOS - INSTALLATION CHECK
  684.     AX = 8200h
  685. Return: AL = FFh if installed
  686. Program: CAPDOS is a TSR by Nanosoft, Inc. which allows INT 21h calls to be
  687.       captured and recorded for later analysis
  688. SeeAlso: AX=8100h,AX=8201h"CAPDOS",AX=8202h"CAPDOS",AX=8203h"CAPDOS"
  689. SeeAlso: AX=8204h"CAPDOS"
  690. --------s-2F8201-----------------------------
  691. INT 2F - RESPLAY - INSTALLATION CHECK
  692.     AX = 8201h
  693. Return: AX = 7746h if installed
  694. SeeAlso: AX=8202h
  695. --------G-2F8201-----------------------------
  696. INT 2F - Nanosoft, Inc. CAPDOS - CLEAR QUEUE
  697.     AX = 8201h
  698. Note:    resets queue of captured INT 21 calls
  699. SeeAlso: AX=8200h"CAPDOS"
  700. --------s-2F8202-----------------------------
  701. INT 2F - RESPLAY - UNINSTALL
  702.     AX = 8202h
  703. Return: AX = status
  704.         1000h successful
  705. SeeAlso: AX=8201h
  706. --------G-2F8202-----------------------------
  707. INT 2F - Nanosoft, Inc. CAPDOS - START COLLECTION
  708.     AX = 8202h
  709. SeeAlso: AX=8200h"CAPDOS",AX=8203h"CAPDOS"
  710. --------G-2F8203-----------------------------
  711. INT 2F - Nanosoft, Inc. CAPDOS - STOP COLLECTION
  712.     AX = 8203h
  713. SeeAlso: AX=8200h"CAPDOS",AX=8202h"CAPDOS",AX=8204h"CAPDOS"
  714. --------G-2F8204-----------------------------
  715. INT 2F - Nanosoft, Inc. CAPDOS - GET QUEUE PARAMETERS
  716.     AX = 8204h
  717. Return: AH = flag: queue wrapped if nonzero
  718.     BX = index of current start of queue
  719.     CX = size of queue in entries
  720. SeeAlso: AX=8200h"CAPDOS",AX=8202h"CAPDOS",AX=8205h"CAPDOS"
  721. --------G-2F8205-----------------------------
  722. INT 2F - Nanosoft, Inc. CAPDOS - GET QUEUE ITEM
  723.     AX = 8205h
  724.     BX = queue item number
  725. Return: AX,BX,CX,DX,SI,DI,DS,ES as on entry to captured DOS call
  726. SeeAlso: AX=8200h"CAPDOS",AX=8204h"CAPDOS"
  727. --------s-2F8210-----------------------------
  728. INT 2F - RESPLAY - INITIALIZE
  729.     AX = 8210h
  730.     BL = sound device
  731.         00h printer port LPT1
  732.         01h printer port LPT2
  733.         02h prototype board at I/O address 0300h
  734.         03h printer port (alternative LPT1)
  735.         04h internal speaker
  736.     BH = sample rate in multiples of 250 Hz (14h to A0h)
  737.     CL = direction
  738.         00h playback
  739.         01h sample
  740. Return: AX = status
  741.         1000h successful
  742.         2000h parameter out of range
  743.         other RESPLAY not installed
  744. SeeAlso: AX=8200h
  745. ----------2F86-------------------------------
  746. INT 2F U - ???
  747.     AH = 86h
  748.     AL = function (at least 06h and 07h)
  749.     ???
  750. Return: ???
  751. Note:    called by Codeview for Windows
  752. SeeAlso: AH=44h
  753. --------U-2F8900-----------------------------
  754. INT 2F - WHOA!.COM - INSTALLATION CHECK
  755.     AX = 8900h
  756. Return: AL = 00h not installed
  757.        = FFh installed
  758. Program: WHOA!.COM is a system slow-down utility by Brad D Crandall
  759. SeeAlso: AX=8901h,AX=8902h
  760. --------U-2F8901-----------------------------
  761. INT 2F - WHOA!.COM - UNINSTALL
  762.     AX = 8901h
  763. Return: AL = FDh successful
  764.        = FEh error
  765. Program: WHOA!.COM is a system slow-down utility by Brad D Crandall
  766. SeeAlso: AX=8900h
  767. --------U-2F8902-----------------------------
  768. INT 2F - WHOA!.COM - SET DELAY COUNT
  769.     AX = 8902h
  770.     BX = delay count (larger values slow system down more)
  771. Return: AL = FDh successful
  772.        = FEh error
  773. Program: WHOA!.COM is a system slow-down utility by Brad D Crandall
  774. SeeAlso: AX=8900h
  775. --------U-2F9000-----------------------------
  776. INT 2F U - RAID - INSTALLATION CHECK
  777.     AX = 9000h
  778. Return: AL = FFh if installed
  779. Program: RAID (Resident AID) is a TSR utility program by Ross Neilson Wentworth
  780.       that resides mostly in EMS
  781. --------U-2F9001-----------------------------
  782. INT 2F U - RAID - GET ???
  783.     AX = 9001h
  784. Return: DX:AX -> ???
  785. SeeAlso: AX=9000h
  786. --------U-2F9002-----------------------------
  787. INT 2F U - RAID - GET RESIDENT SEGMENT
  788.     AX = 9002h
  789. Return: AX = segment of resident (conventional memory) portion
  790. SeeAlso: AX=9000h
  791. --------U-2F9003-----------------------------
  792. INT 2F U - RAID - UNINSTALL
  793.     AX = 9003h
  794. Return: ???
  795. SeeAlso: AX=9000h
  796. --------U-2F9004-----------------------------
  797. INT 2F U - RAID - GET ???
  798.     AX = 9004h
  799. Return: AX = first available paragraph past end of resident portion???
  800.     CX destroyed
  801. SeeAlso: AX=9000h
  802. --------e-2F92-------------------------------
  803. INT 2F - Couriers LAN E-Mail - API
  804.     AH = 92h
  805.     AL = function
  806.         00h installation check
  807.         01h uninstall
  808.         02h pop down MICRO.EXE notification window
  809.         03h ???
  810.         04h ???
  811.         05h ???
  812. Return: ???
  813. SeeAlso: AH=9Ch
  814. Index:    installation check;Couriers LAN E-Mail|uninstall;Couriers LAN E-Mail
  815. --------R-2F9200-----------------------------
  816. INT 2F U - PC Tools v8.0 DRIVEMAP - BUG
  817.     AX = 9200h
  818. Program: DRIVEMAP is a redirector which allows drives on computers connected
  819.       over the parallel or serial ports to appear as local drives
  820. BUG:    jumps to data because jump table entry is 0000h
  821. Note:    DRIVEMAP returns AX=FFFFh if not a valid function number in AL
  822. --------R-2F9201-----------------------------
  823. INT 2F U - PC Tools v8.0 DRIVEMAP - CHECK IF MAPPED DRIVE
  824.     AX = 9201h
  825.     DL = drive number (01h = A:, etc.)
  826. Return: AL = 92h if mapped drive
  827.     AH may be destroyed (v8.0 DRIVEMAP returns AX=0000h if not mapped)
  828. SeeAlso: AX=9204h,AX=920Bh
  829. --------R-2F9202-----------------------------
  830. INT 2F U - PC Tools v8.0 DRIVEMAP - UNINSTALL
  831.     AX = 9202h
  832.     BX = caller's CS
  833. Return: AX = status
  834.         0000h failed
  835.         nonzero successful
  836. SeeAlso: AX=9204h
  837. --------R-2F9203-----------------------------
  838. INT 2F U - PC Tools v8.0 DRIVEMAP - GET VERSION
  839.     AX = 9203h
  840. Return: AH = major version
  841.     AL = minor version
  842.     CX = segment of resident code
  843. Note:    the DRIVEMAP included with PC Tools v8.0 is version 1.00
  844. SeeAlso: AX=9204h,INT 16/AX=FF70h
  845. --------R-2F9204-----------------------------
  846. INT 2F U - PC Tools v8.0 DRIVEMAP - INSTALLATION CHECK
  847.     AX = 9204h
  848. Return: AX = 9200h if installed
  849.        BL = ???
  850.        CX = segment of resident code
  851. Program: DRIVEMAP is a redirector which allows drives on computers connected
  852.       over the parallel or serial ports to appear as local drives
  853. SeeAlso: AX=9201h,AX=9202h,AX=9203h
  854. --------R-2F9205-----------------------------
  855. INT 2F U - PC Tools v8.0 DRIVEMAP - SET ???
  856.     AX = 9205h
  857.     BX = ??? to set
  858. Return: CX = new value of ???
  859. --------R-2F9206-----------------------------
  860. INT 2F U - PC Tools v8.0 DRIVEMAP - ???
  861.     AX = 9206h
  862.     ???
  863. Return: ???
  864. --------R-2F9207-----------------------------
  865. INT 2F U - PC Tools v8.0 DRIVEMAP - GET ???
  866.     AX = 9207h
  867.     ???
  868. Return: AX = ???
  869. --------R-2F9208-----------------------------
  870. INT 2F U - PC Tools v8.0 DRIVEMAP - ???
  871.     AX = 9208h
  872.     ???
  873. Return: ???
  874. --------R-2F9209-----------------------------
  875. INT 2F U - PC Tools v8.0 DRIVEMAP - ???
  876.     AX = 9209h
  877.     ???
  878. Return: AX = ???
  879.     BX = ???
  880.     CX = ???
  881.     DX = ???
  882. --------R-2F920A-----------------------------
  883. INT 2F U - PC Tools v8.0 DRIVEMAP - ???
  884.     AX = 920Ah
  885.     BX = ???
  886. Return: AX = ??? or FFFBh on error
  887. --------R-2F920B-----------------------------
  888. INT 2F U - PC Tools v8.0 DRIVEMAP - SET DRIVE MAPPING
  889.     AX = 920Bh
  890.     BL = drive letter (41h ['A'] = A:, etc)
  891.     CX = ??? (0000h removes mapping)
  892. Return: AX = ??? or FFF8h on error
  893. SeeAlso: AX=9201h,AX=920Dh
  894. --------R-2F920C-----------------------------
  895. INT 2F U - PC Tools v8.0 DRIVEMAP - ???
  896.     AX = 920Ch
  897.     ???
  898. Return: AX = ??? (0002h)
  899.     CX = ??? (0000h)
  900. --------R-2F920D-----------------------------
  901. INT 2F U - PC Tools v8.0 DRIVEMAP - GET DRIVE TYPE
  902.     AX = 920Dh
  903.     BL = drive letter (41h ['A'] = A:, etc)
  904. Return: AX = type flags
  905.         bit 0: ???
  906.         bit 1: available
  907.         bit 5: local
  908.     BX = ???
  909.     CX = segment of resident code (apparently an unintended side effect)
  910. Program: DRIVEMAP is a redirector which allows drives on computers connected
  911.       over the parallel or serial ports to appear as local drives
  912. SeeAlso: AX=9218h,INT 16/AX=FF70h
  913. --------R-2F920E-----------------------------
  914. INT 2F U - PC Tools v8.0 DRIVEMAP - SET LPT MAPPING
  915.     AX = 920Eh
  916.     BX = port number (0-2)
  917.     CX = ??? (0000h to unmap)
  918. Return: ???
  919. --------R-2F920F-----------------------------
  920. INT 2F U - PC Tools v8.0 DRIVEMAP - GET ???
  921.     AX = 920Fh
  922.     ES:DI -> 3-byte buffer for ???
  923. Return: CX = 0000h
  924.     ES:DI buffer filled
  925. --------R-2F9210-----------------------------
  926. INT 2F U - PC Tools v8.0 DRIVEMAP - ???
  927.     AX = 9210h
  928.     ???
  929. Return: ???
  930. --------R-2F9211-----------------------------
  931. INT 2F U - PC Tools v8.0 DRIVEMAP - GET ???
  932.     AX = 9211h
  933.     ES:DI -> 8-word buffer for ???
  934. Return: CX = 0000h
  935.     ES:DI buffer filled
  936. --------R-2F9212-----------------------------
  937. INT 2F U - PC Tools v8.0 DRIVEMAP - CRITICAL SECTION???
  938.     AX = 9212h
  939.     BX = phase
  940.         0000h leave critical section???
  941.         nonzero enter critical section???
  942. -------R-2F9213-----------------------------
  943. INT 2F U - PC Tools v8.0 DRIVEMAP - ???
  944.     AX = 9213h
  945.     BX = function number (0000h-000Bh)
  946.     ???
  947. Return: ???
  948. --------R-2F9214-----------------------------
  949. INT 2F U - PC Tools v8.0 DRIVEMAP - GET ???
  950.     AX = 9214h
  951.     ES:DI -> 6-word buffer for ???
  952. Return: CX = 0000h
  953.     AX = ???
  954.     ES:DI buffer filled
  955. --------R-2F9215-----------------------------
  956. INT 2F U - PC Tools v8.0 DRIVEMAP - GET ???
  957.     AX = 9215h
  958.     ES:DI -> 100-word buffer for ???
  959. Return: CX = 0000h
  960.     ES:DI buffer filled
  961. --------R-2F9216-----------------------------
  962. INT 2F U - PC Tools v8.0 DRIVEMAP - ???
  963.     AX = 9216h
  964.     ES:DI -> ???
  965. Return: ???
  966. --------R-2F9217-----------------------------
  967. INT 2F U - PC Tools v8.0 DRIVEMAP - ???
  968.     AX = 9217h
  969.     DS:SI -> 25-word buffer containing ???
  970. Return: ???
  971. --------R-2F9218-----------------------------
  972. INT 2F U - PC Tools v8.0 DRIVEMAP - GET LPT TYPE???
  973.     AX = 9218h
  974.     BX = port number???
  975. Return: AX = ???
  976.     BX = ??? (0000h)
  977.     CX = ??? (0000h)
  978. Program: DRIVEMAP is a redirector which allows drives on computers connected
  979.       over the parallel or serial ports to appear as local drives
  980. --------R-2F9219-----------------------------
  981. INT 2F U - PC Tools v8.0 DRIVEMAP - ???
  982.     AX = 9219h
  983.     ???
  984. Return: ???
  985. --------R-2F921A-----------------------------
  986. INT 2F U - PC Tools v8.0 DRIVEMAP - ???
  987.     AX = 921Ah
  988.     ???
  989. Return: AH = ???
  990.     AL = ???
  991.     BX = ???
  992. --------R-2F921B-----------------------------
  993. INT 2F U - PC Tools v8.0 DRIVEMAP - ???
  994.     AX = 921Bh
  995.     ???
  996. Return: AX = ???
  997.     CX = segment of resident code (apparently an unintended side effect)
  998. --------R-2F921C-----------------------------
  999. INT 2F U - PC Tools v8.0 DRIVEMAP - ???
  1000.     AX = 921Ch
  1001.     ???
  1002. Return: ???
  1003. --------R-2F921D-----------------------------
  1004. INT 2F U - PC Tools v8.0 DRIVEMAP - GET ???
  1005.     AX = 921Dh
  1006. Return: AX = ???
  1007. --------R-2F921E-----------------------------
  1008. INT 2F U - PC Tools v8.0 DRIVEMAP - ???
  1009.     AX = 921Eh
  1010.     ???
  1011. Return: ???
  1012. Program: DRIVEMAP is a redirector which allows drives on computers connected
  1013.       over the parallel or serial ports to appear as local drives
  1014. Note:    this function sets two variables to 24h each
  1015. SeeAlso: INT 16/AX=FF70h
  1016. --------V-2F93-------------------------------
  1017. INT 2F - InnerMission v1.7+ - INSTALLATION CHECK
  1018.     AH = 93h
  1019.     BX = CX = AX
  1020. Return: AL = FFh if installed and BX=CX=AX on entry
  1021.         BX = segment of resident code
  1022.        = 01h if installed but BX or CX differ from AX
  1023. Program: InnerMission is a shareware graphical screen blanker by Kevin Stokes
  1024. Index:    screen saver;InnerMission
  1025. --------e-2F9400-----------------------------
  1026. INT 2F - MICRO.EXE - INSTALLATION CHECK
  1027.     AX = 9400h
  1028. Return: AL = 07h or 08h if installed
  1029. Program: MICRO.EXE is a TSR of the Microsoft Mail part of Workgroup Connection,
  1030.       bundled with MS-DOS 6.0
  1031. SeeAlso: AX=9401h,AX=9402h,AX=9403h,AX=9404h,INT 21/AH=3Fh"WORKGRP.SYS"
  1032. --------e-2F9401-----------------------------
  1033. INT 2F - MICRO.EXE - SET ??? FLAG
  1034.     AX = 9401h
  1035. SeeAlso: AX=9400h,AX=9403h
  1036. --------e-2F9402-----------------------------
  1037. INT 2F - MICRO.EXE - ???
  1038.     AX = 9402h
  1039.     ???
  1040. Return: ???
  1041. SeeAlso: AX=9400h
  1042. --------e-2F9403-----------------------------
  1043. INT 2F - MICRO.EXE - SET ??? FLAG
  1044.     AX = 9403h
  1045. SeeAlso: AX=9400h,AX=9404h
  1046. --------e-2F9404-----------------------------
  1047. INT 2F - MICRO.EXE - CLEAR ??? FLAG
  1048.     AX = 9404h
  1049.     ES:DI -> name of executable from which MICRO.EXE was started
  1050. Note:    if the specified name is identical to the name of the program file
  1051.       from which MICRO was started, the ??? flag is cleared; otherwise,
  1052.       it is left unchanged
  1053. SeeAlso: AX=9400h,AX=9403h
  1054. --------e-2F9C-------------------------------
  1055. INT 2F - Couriers LAN E-Mail OPERATOR.EXE - API
  1056.     AH = 9Ch
  1057.     AL = subfunction
  1058.         01h uninstall
  1059. Return: ???
  1060. SeeAlso: AH=92h
  1061. Index:    uninstall;Couriers LAN E-Mail OPERATOR.EXE
  1062. --------G-2F9E00-----------------------------
  1063. INT 2F U - INTMON v2.1 - INSTALLATION CHECK
  1064.     AX = 9E00h
  1065. Return: AX = FFFFh if installed
  1066.         BX = segment of resident code
  1067. Program: INTMON is a shareware interactive interrupt monitoring TSR for 386
  1068.       and higher machines by Celso Minnitti, Jr.
  1069. SeeAlso: AX=9E01h,AX=9E02h,AX=9E03h,AX=9F00h
  1070. --------G-2F9E01-----------------------------
  1071. INT 2F U - INTMON v2.1 - RESET
  1072.     AX = 9E01h
  1073. Return: ???
  1074. Desc:    this function specifies that INTMON should assume that any interrupts
  1075.       on which it is currently awaiting a return have completed (i.e.
  1076.       interrupts which never return such as INT 20 and INT 27)
  1077. SeeAlso: AX=9E00h,AX=9E03h
  1078. --------G-2F9E02-----------------------------
  1079. INT 2F U - INTMON v2.1 - DISPLAY CPU REGISTERS???
  1080.     AX = 9E02h
  1081. Return: ???
  1082. SeeAlso: AX=9E00h
  1083. --------G-2F9E03-----------------------------
  1084. INT 2F U - INTMON v2.1 - HOOK INTERRUPT???
  1085.     AX = 9E03h
  1086.     BH = interrupt number???
  1087. Return: ???
  1088. Note:    if AH > 03h on entry, INTMON 2.1 returns immediately
  1089. SeeAlso: AX=9E00h,AX=9E01h
  1090. --------G-2F9F00-----------------------------
  1091. INT 2F U - INTCFG v2.1 - INSTALLATION CHECK
  1092.     AX = 9F00h
  1093. Return: AX = FFFFh if installed
  1094. Program: INTCFG is an optionally-resident control program for INTMON by Celso
  1095.       Minnitti, Jr.
  1096. SeeAlso: AX=9E00h,AX=9F01h,AX=9F30h,AX=9F49h
  1097. --------G-2F9F01-----------------------------
  1098. INT 2F U - INTCFG v2.1 - ???
  1099.     AX = 9F01h
  1100.     ???
  1101. Return: ???
  1102. SeeAlso: AX=9F00h
  1103. --------G-2F9F30-----------------------------
  1104. INT 2F U - INTCFG v2.1 - GET ???
  1105.     AX = 9F30h
  1106. Return: AX = ??? (0002h)
  1107. SeeAlso: AX=9F00h
  1108. --------G-2F9F49-----------------------------
  1109. INT 2F U - INTCFG v2.1 - UNINSTALL
  1110.     AX = 9F49h
  1111. Return: AX,DX,DS,ES destroyed
  1112. SeeAlso: AX=9F00h
  1113. --------E-2FA1--BX0081-----------------------
  1114. INT 2F - Ergo DOS extenders - INSTALLATION CHECK
  1115.     AH = A1h
  1116.     BX = 0081h
  1117.     AL = which
  1118.         FEh OS/286,OS/386
  1119.         FFh HummingBoard DOS extender
  1120.     ES:DI -> 16-byte buffer
  1121. Return: if installed, first four bytes of ES:DI buffer are "IABH"
  1122. Note:    since TKERNEL is a licensed version, it is likely that subfunctions
  1123.       BX=0082h and BX=0084h are present and function identically to the
  1124.       AX=FBA1h/BX=008xh calls
  1125. SeeAlso: AX=ED00h,AX=FBA1h/BX=0081h,INT 15/AX=BF02h
  1126. --------m-2FA189-----------------------------
  1127. INT 2F U - Biologic HRAMDEV.SYS - API
  1128.     AX = A189h
  1129.     BX = subfunction
  1130.         0000h set ???
  1131.         0001h remove ???
  1132.         0002h get status ???
  1133.         0003h enable ???
  1134.         0004h disable ???
  1135.         0005h set ??? flag
  1136.         0006h clear ??? flag
  1137.         0007h set ??? flag
  1138.         0008h clear ??? flag
  1139.         0009h set ???
  1140.     ES:DI -> function-specific arguments
  1141.         if func 0000h: 20-byte buffer containing ???
  1142.         if func 0001h: 20-byte buffer for returned ???
  1143.         if func 0002h: 16-byte buffer for returned ???
  1144.         if func 0009h: WORD containing ???
  1145. Return: BX = A189h if installed
  1146.     AH = status
  1147.         00h successful
  1148.         FFh failed or invalid function number
  1149. Program: HRAMDEV.SYS is a part of the shareware package HRAM by Biologic which
  1150.       provides improved high memory access under MS-DOS 5.0
  1151. Note:    functions 00h and 01h use a stack of four entries; function 01h always
  1152.       removes the values stored with the most recent function 00h call
  1153.       which has not yet been matched with a function 01h call.
  1154. --------U-2FA4E0-----------------------------
  1155. INT 2F - Futurus Team - INSTALLATION CHECK
  1156.     AX = A4E0h
  1157. Return: AL = 52h ("R") if installed
  1158.         AH = major version plus 30h ("0")
  1159.         ES:BX -> ??? (INT A4 handler???)
  1160. Note:    older versions of Right Hand Man (from which Team evolved) store the
  1161.       signature "RH" at offset 103h in the INT 2F handler's segment
  1162. SeeAlso: INT A4"Right Hand Man"
  1163. ----------2FA900-----------------------------
  1164. INT 2F - METZTSR.COM - INSTALLATION CHECK
  1165.     AX = A900h
  1166.     CF set
  1167. Return: CF clear if resident
  1168.         AX = 97FFh
  1169.     CF set if not present
  1170. Notes:    METZTSR.COM prevents METZ applications (such as the MAGIC screen
  1171.       saver) inactivity timeout while running a DOSapp under MS Windows.
  1172.     the default multiplex number is A9h, but may be set to any value from
  1173.       80h to FFh with a commandline switch
  1174. SeeAlso: AX=A901h,AX=A902h
  1175. ----------2FA901-----------------------------
  1176. INT 2F - METZTSR.COM - GET TIME OF LAST KEYBOARD ACTIVITY
  1177.     AX = A901h
  1178.     CF set
  1179. Return: CF clear if successful
  1180.         AX:DX = BIOS time at which INT 09 was last invoked
  1181.     CF set if not present
  1182. SeeAlso: INT 09,INT 1A/AH=00h
  1183. ----------2FA902-----------------------------
  1184. INT 2F - METZTSR.COM - SET METZ Ctrl-Alt-Del FLAG
  1185.     AX = A902h
  1186.     BL = new value
  1187.         00h Ctrl-Alt-Del not allowed
  1188.         else Ctrl-Alt-Del allowed (startup default is 01h)
  1189.     CF set
  1190. Return: CF clear if successful
  1191.         AX = 97FFh
  1192.     CF set if not resident
  1193. SeeAlso: AX=A903h
  1194. ----------2FA903-----------------------------
  1195. INT 2F - METZTSR.COM - GET METZ Ctrl-Alt-Del FLAG
  1196.     AX = A903h
  1197.     CF set
  1198. Return: CF clear if successful
  1199.         AX = 97FFh if Ctrl-Alt-Del allowed
  1200.         AX = 0000h if Ctrl-Alt-Del not allowed
  1201.     CF set if not resident
  1202. SeeAlso: AX=A902h
  1203. --------U-2FAA00-----------------------------
  1204. INT 2F - VIDCLOCK.COM - INSTALLATION CHECK
  1205.     AX = AA00h
  1206. Return: AL = 00h not installed
  1207.          FFh installed
  1208. Program: VIDCLOCK.COM is a memory-resident clock by Thomas G. Hanlin III
  1209. --------f-2FAB00-----------------------------
  1210. INT 2F - Btrieve Multi-User - INSTALLATION CHECK
  1211.     AX = AB00h
  1212. Return: AL = 4Dh if installed
  1213. SeeAlso: AX=AB01h,AX=AB02h,INT 7B"Btrieve"
  1214. --------f-2FAB01-----------------------------
  1215. INT 2F - Btrieve Multi-User - EXECUTE Btrieve OPERATION
  1216.     AX = AB01h
  1217.     BX = process ID
  1218.     DS:DX -> 38-byte parameter record (see INT 7B"Btrieve")
  1219. Return: AL = 00h OK
  1220.        = other retry after calling INT 7F/AX=0200h
  1221. SeeAlso: AX=AB00h,AX=AB02h,INT 7B"Btrieve",INT 7F/AX=0200h
  1222. --------f-2FAB02-----------------------------
  1223. INT 2F - Btrieve Multi-User - GET NEW PROCESS ID
  1224.     AX = AB02h
  1225. Return: AL = 00h succesful
  1226.         BX = process ID
  1227.     AL > 00h failed, retry after calling INT 7F/AX=0200h
  1228. SeeAlso: AX=AB00h,AX=AB01h,INT 7B"Btrieve",INT 7F/AX=0200h
  1229. --------V-2FAC00-----------------------------
  1230. INT 2F - DOS 4.01+ GRAPHICS.COM - INSTALLATION CHECK
  1231.     AX = AC00h
  1232. Return: AX = FFFFh
  1233.     ES:DI -> ??? (graphics data?) (not documented)
  1234. Note:    this installation check was moved here to avoid the conflict with the
  1235.       CD-ROM extensions that occurred in DOS 4.00
  1236. SeeAlso: AX=1500h"GRAPHICS"
  1237. --------V-2FAD00-----------------------------
  1238. INT 2F U - DOS 3.3+ DISPLAY.SYS internal - INSTALLATION CHECK
  1239.     AX = AD00h
  1240. Return: AL = FFh if installed
  1241.         BX = ??? (0100h in MS-DOS 3.30, PC-DOS 4.01)
  1242. Note:    DOS 5.0 DISPLAY.SYS chains to previous handler if AL is not one of the
  1243.       subfunctions listed here
  1244. --------O-2FAD00-----------------------------
  1245. INT 2F U - DR-DOS 3.41,5.0 KEYB - INSTALLATION CHECK
  1246.     AX = AD00h
  1247. Return: AX = FFFFh if installed
  1248. SeeAlso: AX=AD80h
  1249. --------V-2FAD01-----------------------------
  1250. INT 2F U - DOS 3.3+ DISPLAY.SYS internal - SET ACTIVE CODE PAGE
  1251.     AX = AD01h
  1252.     BX = new code page
  1253. Return: CF clear if successful
  1254.         AX = 0001h
  1255.     CF set on error (unsupported code page)
  1256.         AX = 0000h
  1257. SeeAlso: AX=AD02h
  1258. ----------2FAD01-----------------------------
  1259. INT 2F U - DR-DOS 3.41,5.0 KEYB - GET CONFIGURATION
  1260.     AX = AD01h
  1261. Return: BX = current code page
  1262.     CX = current keyboard layout (0100h = US, 0102h = foreign)
  1263.     ES = resident code segment
  1264. SeeAlso: AX=AD83h
  1265. --------V-2FAD02-----------------------------
  1266. INT 2F U - DOS 3.3+ DISPLAY.SYS internal - GET ACTIVE CODE PAGE
  1267.     AX = AD02h
  1268. Return: CF set if code page never set
  1269.         AX = 0001h
  1270.         BX = FFFFh (assume first hardware code page)
  1271.     CF clear if successful
  1272.         BX = current code page
  1273. SeeAlso: AX=AD01h,AX=AD03h
  1274. --------V-2FAD03-----------------------------
  1275. INT 2F U - DOS 3.3+ DISPLAY.SYS internal - GET CODE PAGE INFORMATION
  1276.     AX = AD03h
  1277.     ES:DI -> buffer for code page information (see below)
  1278.     CX = size of buffer in bytes
  1279. Return: CF set if buffer too small
  1280.     CF clear if successful
  1281.         ES:DI buffer filled
  1282. SeeAlso: AX=AD01h,AX=AD02h
  1283.  
  1284. Format of DOS 5.0 code page information:
  1285. Offset    Size    Description
  1286.  00h    WORD    number of software code pages
  1287.  02h    WORD    ??? (0003h)
  1288.  04h    WORD    number of hardware code pages
  1289.  06h  N WORDs    hardware code page numbers
  1290.       N WORDs    software (prepared) code pages (FFFFh if not yet prepared)
  1291. --------V-2FAD04-----------------------------
  1292. INT 2F U - DOS 4.x only DISPLAY.SYS internal - ???
  1293.     AX = AD04h
  1294.     ???
  1295. Return: ???
  1296. --------V-2FAD10-----------------------------
  1297. INT 2F U - DOS 4.x DISPLAY.SYS internal - INSTALLATION CHECK???
  1298.     AX = AD10h
  1299.     ???
  1300. Return: AX = FFFFh
  1301.     BX = ??? (0100h in PC-DOS 4.01)
  1302. --------V-2FAD10-----------------------------
  1303. INT 2F U - DOS 5.0 DISPLAY.SYS internal - ???
  1304.     AX = AD10h
  1305.     ???
  1306. Return: CF clear if successful
  1307.     CF set on error
  1308. Note:    this function is a NOP if the active code page has never been set
  1309.       (AX=AD02h returns BX=FFFFh); its purpose otherwise is not known
  1310. --------V-2FAD40-----------------------------
  1311. INT 2F - DOS 4+ - ???
  1312.     AX = AD40h
  1313.     DX = ???
  1314.     ???
  1315. Return: ???
  1316. Note:    called by PC-DOS 4.01 PRINT.COM
  1317. --------K-2FAD80-----------------------------
  1318. INT 2F u - DOS 3.3+ KEYB.COM internal - INSTALLATION CHECK
  1319.     AX = AD80h
  1320. Return: AL = FFh if installed
  1321.         BX = version number (BH = major, BL = minor)
  1322.         ES:DI -> internal data (see below)
  1323. Notes:    MS-DOS 3.30, PC-DOS 4.01, and MS-DOS 5.00 all report version 1.00.
  1324.     undocumented prior to the release of DOS 5.0
  1325.  
  1326. Format of KEYB internal data:
  1327. Offset    Size    Description
  1328.  00h    DWORD    original INT 09
  1329.  04h    DWORD    original INT 2F
  1330.  08h  6 BYTEs    ???
  1331.  0Eh    WORD    flags
  1332.  10h    BYTE    ???
  1333.  11h    BYTE    ???
  1334.  12h  4 BYTEs    ???
  1335.  16h  2 BYTEs    country ID letters
  1336.  18h    WORD    current code page
  1337. ---DOS 3.3---
  1338.  1Ah    WORD    pointer to first item in list of code page tables???
  1339.  1Ch    WORD    pointer to ??? item in list of code page tables
  1340.  1Eh  2 BYTEs    ???
  1341.  20h    WORD    pointer to key translation data
  1342.  22h    WORD    pointer to last item in code page table list (see below)
  1343.  24h  9 BYTEs    ???
  1344. ---DOS 4.01---
  1345.  1Ah  2 BYTEs    ???
  1346.  1Ch    WORD    pointer to first item in list of code page tables???
  1347.  1Eh    WORD    pointer to ??? item in list of code page tables
  1348.  20h  2 BYTEs    ???
  1349.  22h    WORD    pointer to key translation data
  1350.  24h    WORD    pointer to last item in code page table list (see below)
  1351.  26h  9 BYTEs    ???
  1352.  
  1353. Format of code page table list entries:
  1354. Offset    Size    Description
  1355.  00h    WORD    pointer to next item, FFFFh = last
  1356.  02h    WORD    code page
  1357.  04h  2 BYTEs    ???
  1358.  
  1359. Format of translation data:
  1360. Offset    Size    Description
  1361.  00h    WORD    size of data in bytes, including this word
  1362.  02h N-2 BYTEs    ???
  1363. --------K-2FAD81-----------------------------
  1364. INT 2F - DOS 3.3+ KEYB.COM - SET KEYBOARD CODE PAGE
  1365.     AX = AD81h
  1366.     BX = code page (see INT 21/AX=6601h)
  1367. Return: CF set on error
  1368.         AX = 0001h (code page not available)
  1369.     CF clear if successful
  1370. Notes:    called by DISPLAY.SYS
  1371.     undocumented prior to the release of DOS 5.0
  1372. SeeAlso: AX=AD82h
  1373. --------K-2FAD82-----------------------------
  1374. INT 2F - DOS 3.3+ KEYB.COM - SET KEYBOARD MAPPING
  1375.     AX = AD82h
  1376.     BL = new state
  1377.         00h US keyboard (Control-Alt-F1)
  1378.         FFh foreign keyboard (Control-Alt-F2)
  1379. Return: CF set on error (BL not 00h or FFh)
  1380.     CF clear if successful
  1381. Note:    undocumented prior to the release of DOS 5.0
  1382. SeeAlso: AX=AD81h,AX=AD83h
  1383. --------K-2FAD83-----------------------------
  1384. INT 2F - DOS 5+ KEYB.COM - GET KEYBOARD MAPPING
  1385.     AX = AD83h
  1386. Return: BL = current state
  1387.         00h US keyboard
  1388.         FFh foreign keyboard
  1389. SeeAlso: AX=AD82h
  1390. --------l-2FAE00DXFFFF-----------------------
  1391. INT 2F U - DOS 3.3+ internal - INSTALLABLE COMMAND - INSTALLATION CHECK
  1392.     AX = AE00h
  1393.     DX = FFFFh
  1394.     CH = FFh
  1395.     CL = length of command line tail (4DOS v4.0)
  1396.     DS:BX -> command line buffer (see below)
  1397.     DS:SI -> command name buffer (see below)
  1398.     DI = 0000h (4DOS v4.0)
  1399. Return: AL = FFh if this command is a TSR extension to COMMAND.COM
  1400.     AL = 00h if the command should be executed as usual
  1401. Notes:    This call provides a mechanism for TSRs to install permanent
  1402.       extensions to the command repertoire of COMMAND.COM.    It appears
  1403.       that COMMAND.COM makes this call before executing the current
  1404.       command line, and does not execute it itself if the return is FFh.
  1405.     APPEND hooks this call, to allow subsequent APPEND commands to
  1406.       execute without re-running APPEND
  1407.  
  1408. Format of command line buffer:
  1409. Offset    Size    Description
  1410.  00h    BYTE    max length of command line, as in INT 21/AH=0Ah
  1411.  01h    BYTE    count of bytes to follow, excluding terminating 0Dh
  1412.       N BYTEs    command line text, terminated by 0Dh
  1413.  
  1414. Format of command name buffer:
  1415. Offset    Size    Description
  1416.  00h    BYTE    length of command name
  1417.  01h  N BYTEs    uppercased command name (blank-padded to 11 chars by 4DOS v4)
  1418. --------l-2FAE01DXFFFF-----------------------
  1419. INT 2F U - DOS 3.3+ internal - INSTALLABLE COMMAND - EXECUTE
  1420.     AX = AE01h
  1421.     DX = FFFFh
  1422.     CH = 00h
  1423.     CL = length of command name (4DOS v4.0)
  1424.     DS:SI -> command name buffer (see AX=AE00h)
  1425.     DS:BX -> command line buffer (see AX=AE00h)
  1426. Return: DS:SI buffer updated
  1427.       if length byte is nonzero, the following bytes contain the uppercase
  1428.       internal command to execute and the command line buffer contains the
  1429.       command's parameters (the first DS:[SI] bytes are ignored)
  1430. Notes:    this call requests execution of the command which a previous call to
  1431.       AX=AE00h indicated was resident
  1432.     APPEND hooks this call
  1433. ----------2FAF-------------------------------
  1434. INT 2F U - ???
  1435.     AH = AFh !!!
  1436.     ???
  1437. Return: ???
  1438. --------V-2FB000-----------------------------
  1439. INT 2F - DOS 3.3+ GRAFTABL.COM - INSTALLATION CHECK
  1440.     AX = B000h
  1441. Return: AL = 00h not installed, OK to install
  1442.        = 01h not installed, not OK to install
  1443.        = FFh installed
  1444. Notes:    called by DISPLAY.SYS
  1445.     documented for DOS 5.0, but undocumented in prior versions
  1446. SeeAlso: AX=B001h
  1447. --------V-2FB001-----------------------------
  1448. INT 2F - DOS 3.3+ GRAFTABL.COM - GET GRAPHICS FONT TABLE
  1449.     AX = B001h
  1450.     DS:BX -> DWORD buffer for address of 8x8 font table
  1451. Return: buffer filled
  1452.     AL = FFh
  1453. Note:    PC-DOS 3.30/4.01 set the font table offset to 0130h, MS-DOS 3.30 to
  1454.       0030h
  1455. SeeAlso: AX=B000h
  1456. --------I-2FB400-----------------------------
  1457. INT 2F - IBM PC3270 EMULATION PROG v3 - INSTALLATION CHECK
  1458.     AX = B400h
  1459. Return: AL = FFh if installed
  1460. --------I-2FB401-----------------------------
  1461. INT 2F - IBM PC3270 EMULATION PROG v3 - GET HOST BUFFER ADDRESS
  1462.     AX = B401h
  1463. Return: ES -> host screen buffer (PC ASCII format)
  1464.     ES unchanged if communications not started
  1465. --------I-2FB402-----------------------------
  1466. INT 2F - IBM PC3270 EMULATION PROG v3 - ???
  1467.     AX = B402h
  1468.     BX = ???
  1469. Return: ???
  1470. --------I-2FB403-----------------------------
  1471. INT 2F - IBM PC3270 EMULATION PROG v3 - ???
  1472.     AX = B403h
  1473.     ???
  1474. Return: ???
  1475. --------I-2FB404-----------------------------
  1476. INT 2F - IBM PC3270 EMULATION PROG v3 - ???
  1477.     AX = B404h
  1478.     ???
  1479. Return: ???
  1480. --------I-2FB405-----------------------------
  1481. INT 2F - IBM PC3270 EMULATION PROG v3 - ???
  1482.     AX = B405h
  1483.     ???
  1484. Return: ???
  1485. ----------2FB700-----------------------------
  1486. INT 2F - APPEND - INSTALLATION CHECK
  1487.     AX = B700h
  1488. Return: AL = status
  1489.         00h not installed
  1490.         FFh installed
  1491. Note:    MS-DOS 3.30 APPEND refuses to install itself when run inside TopView or
  1492.       a TopView-compatible environment
  1493. ----------2FB701-----------------------------
  1494. INT 2F U - APPEND v3.21 only - GET APPEND PATH
  1495.     AX = B701h
  1496. Return: ES:DI -> active APPEND path
  1497. Notes:    the only version of APPEND known to support this call is the APPEND
  1498.       shipped with Microtek MS-DOS 3.21; MS-DOS 3.30-6.00 APPEND displays
  1499.       "Incorrect APPEND Version" and aborts the caller
  1500.     use AX=B704h first, and only call this function if that one is not
  1501.       supported
  1502. SeeAlso: AX=B704h
  1503. ----------2FB702-----------------------------
  1504. INT 2F - APPEND - VERSION CHECK
  1505.     AX = B702h
  1506. Return: AX = FFFFh if not DOS 4.0 APPEND (also if DOS 5.0 APPEND)
  1507.     AL = major version number
  1508.     AH = minor version number, otherwise
  1509. SeeAlso: AX=B710h
  1510. ----------2FB703-----------------------------
  1511. INT 2F U - DOS 3.3, DOS 5.0 APPEND - HOOK INT 21
  1512.     AX = B703h
  1513.     ES:DI -> INT 21 handler APPEND should chain to
  1514. Return: ES:DI -> APPEND's INT 21 handler
  1515. Note:    each invocation of this function toggles a flag which APPEND uses to
  1516.       determine whether to chain to the user handler or the original
  1517.       INT 21
  1518. ----------2FB704-----------------------------
  1519. INT 2F - DOS 3.3+ APPEND - GET APPEND PATH
  1520.     AX = B704h
  1521. Return: ES:DI -> active APPEND path (128 bytes max)
  1522. Note:    some versions of append do not support this call, and return ES
  1523.       unchanged; in this case, you should call AX=B701h to get the APPEND
  1524.       path
  1525. SeeAlso: AX=B701h
  1526. ----------2FB706-----------------------------
  1527. INT 2F - DOS 4+ APPEND - GET APPEND FUNCTION STATE
  1528.     AX = B706h
  1529. Return: BX = APPEND state
  1530.         bit 0: set if APPEND enabled
  1531.         bits 1-11 reserved
  1532.         bit 12: (DOS 5.0) set if APPEND applies directory search even if a
  1533.             drive has been specified
  1534.         bit 13: set if /PATH flag active
  1535.         bit 14: set if /E flag active (environment var APPEND exists)
  1536.         bit 15: set if /X flag active
  1537. ----------2FB707-----------------------------
  1538. INT 2F - DOS 4+ APPEND - SET APPEND FUNCTION STATE
  1539.     AX = B707h
  1540.     BX = APPEND state bits (see AX=B706h)
  1541. ----------2FB710-----------------------------
  1542. INT 2F U - DOS 3.3+ APPEND - GET VERSION INFO
  1543.     AX = B710h
  1544. Return: AX = current APPEND state (see AX=B706h)
  1545.     BX = ??? (0000h in MS-DOS 3.30 and 5.00)
  1546.     CX = ??? (0000h in MS-DOS 3.30 and 5.00)
  1547.     DL = major version
  1548.     DH = minor version
  1549. SeeAlso: AX=B702h
  1550. ----------2FB711-----------------------------
  1551. INT 2F - DOS 4+ APPEND - SET RETURN FOUND NAME STATE
  1552.     AX = B711h
  1553. Note:    if the next INT 21h call (and ONLY the next) is function 3Dh, 43h, or
  1554.     6Ch (also 4B03h and 4Eh if /X active), the fully qualified filename is
  1555.     written over top of the filename passed to the INT 21h call.  The
  1556.     application must provide a sufficiently large buffer.  This state is
  1557.     reset after the next INT 21h call processed by APPEND.
  1558. BUG:    DOS 4.0 APPEND reportedly overwrites DS:DX instead of DS:SI for
  1559.       INT 21/AH=6Ch
  1560. SeeAlso: INT 21/AH=4Eh
  1561. --------N-2FB800-----------------------------
  1562. INT 2F - network - INSTALLATION CHECK
  1563.     AX = B800h
  1564. Return: AL = status
  1565.         00h        not installed
  1566.         nonzero installed
  1567.           BX = installed component flags (test in this order!)
  1568.            bit 6   server
  1569.            bit 2   messenger
  1570.            bit 7   receiver
  1571.            bit 3   redirector
  1572.            bit 1   LANPUP (LANtastic 4.0)
  1573. Notes:    this function is supported by LAN Manager, LANtastic, NetWare Lite,
  1574.       SilverNET, 10NET, etc.
  1575.     LANtastic and NetWare Lite use only BL for the return value, preserving
  1576.       BH; LAN Manager and DOS LAN Requester return BH=00h.    This permits
  1577.       differentiation between those two groups by setting BH to a nonzero
  1578.       value before the call and checking its value on return.
  1579. SeeAlso: AX=4E53h,AX=B809h
  1580. --------N-2FB800CXF041-----------------------
  1581. INT 2F - 10NET - INSTALLATION CHECK
  1582.     AX = B800h
  1583.     CX = F041h
  1584. Return: AL = status
  1585.         00h        not installed
  1586.         nonzero installed
  1587.         BX = installed component flags (test in this order!)
  1588.            bit 6   server
  1589.            bit 2   messenger
  1590.            bit 7   receiver
  1591.            bit 3   redirector
  1592.            bit 1   LANPUP (LANtastic 4.0)
  1593.         CX = 10Net data segment
  1594.         CX:DX -> 10Net Configuration Table (see AX=5E01h"10NET")
  1595. Note:    if CX <> F041h on entry, neither CX nor DX will be changed, and this
  1596.       call becomes identical to the standard installation check above
  1597. SeeAlso: AX=B800h"network",INT 21/AX=5E01h"10NET"
  1598. --------N-2FB803-----------------------------
  1599. INT 2F - network - GET NETWORK EVENT POST HANDLER
  1600.     AX = B803h
  1601. Return: ES:BX -> current event post handler (see AX=B804h)
  1602. Note:    this function is supported by 10NET v5.0
  1603. SeeAlso: AX=B804h,AX=B903h
  1604. --------N-2FB804-----------------------------
  1605. INT 2F - network - SET NETWORK EVENT POST HANDLER
  1606.     AX = B804h
  1607.     CX = (10NET) 0370h if 10Windows is hooking post handler
  1608.     ES:BX -> new event post handler
  1609. Notes:    used in conjunction with AX=B803h to hook into the network event post
  1610.       routine
  1611.     this function is supported by 10NET v5.0
  1612.     The specified handler is called on any network event.  Two events are
  1613.       defined: message received and critical network error.
  1614. SeeAlso: AX=B803h,AX=B904h
  1615.  
  1616. Values post routine is called with:
  1617.     AX = 0000h single block message
  1618.         DS:SI -> ASCIZ originator name
  1619.         DS:DI -> ASCIZ destination name
  1620.         ES:BX -> text header (see below)
  1621.     AX = 0001h start multiple message block
  1622.         CX = block group ID
  1623.         DS:SI -> ASCIZ originator name
  1624.         DS:DI -> ASCIZ destination name
  1625.     AX = 0002h multiple block text
  1626.         CX = block group ID
  1627.         ES:BX -> text header (see below)
  1628.     AX = 0003h end multiple block message
  1629.         CX = block group ID
  1630.     AX = 0004h message aborted due to error
  1631.         CX = block group ID
  1632.     AX = 0101h server received badly formatted network request
  1633.         Return: AX = FFFFh (PC LAN will process error)
  1634.     AX = 0102h unexpected network error
  1635.         ES:BX -> NCB (see INT 5C)
  1636.     AX = 0103h server received INT 24 error
  1637.         other registers as for INT 24, except AH is in BH
  1638.         Return: as below, but only 0000h and FFFFh allowed
  1639. Return: AX = response code
  1640.         0000h user post routine processed message
  1641.         0001h PC LAN will process message, but message window not displayed
  1642.         FFFFh PC LAN will process message
  1643.  
  1644. Format of text header:
  1645. Offset    Size    Description
  1646.  00h    WORD    length of text (maximum 512 bytes)
  1647.  02h  N BYTEs    text of message
  1648. Note:    all CRLF sequences in message text are replaced by 14h
  1649. --------N-2FB807-----------------------------
  1650. INT 2F - network - GET NetBIOS NAME NUMBER OF MACHINE NAME
  1651.     AX = B807h
  1652. Return: CH = NetBIOS name number of the machine name
  1653. SeeAlso: INT 21/AX=5E00h
  1654. --------N-2FB808-----------------------------
  1655. INT 2F U - network - RELINK KEYBOARD HANDLER
  1656.     AX = B808h
  1657.     ES:BX -> INT 09 handler network should call after it finishes INT 09
  1658. Notes:    this call replaces the address to which the network software chains on
  1659.       an INT 09 without preserving the original value.  This allows a prior
  1660.       handler to unlink, but does not allow a new handler to be added
  1661.       such that the network gets the INT 09 first unless the new handler
  1662.       completely takes over INT 09 and never chains.
  1663.     called by DOS 3.2 KEYBxx.COM
  1664. SeeAlso: AX=B908h
  1665. --------N-2FB809-----------------------------
  1666. INT 2F - LANtastic Network, NetWare Lite - VERSION CHECK
  1667.     AX = B809h
  1668. Return: AH = major version
  1669.     AL = minor version (decimal)
  1670. Notes:    this function is also supported by SilverNET
  1671.     NetWare Lite returns its own version number rather than a PC LAN
  1672.       compatibility version
  1673. SeeAlso: AX=4E53h,AX=B800h,AX=B809h"LAN Manager"
  1674. --------N-2FB809-----------------------------
  1675. INT 2F - PC LAN Program - VERSION CHECK
  1676.     AX = B809h
  1677. Return: AH = minor version (decimal)
  1678.     AL = major version
  1679. Notes:    this function is also supported in this form by LAN Manager, the DOS
  1680.       LAN Requester, and 10NET v5.0
  1681.     10NET returns version 1.10 (AX=0A01h) for compatibility
  1682. SeeAlso: AX=4E53h,AX=B800h,AX=B809h"LANtastic"
  1683. --------N-2FB80A-----------------------------
  1684. INT 2F - PC Network 1.00 - ???
  1685.     AX = B80Ah
  1686.     ???
  1687. Return: ???
  1688. Program: PC Network is an early networking package which was renamed the
  1689.       IBM PC Local Area Network Program (PC LAN Program) as of v1.10
  1690. Note:    called by RECEIVER (equivalent to NetWare Lite SERVER)
  1691. --------N-2FB80F-----------------------------
  1692. INT 2F - DOS LAN Requester - GET START PARAMETERS
  1693.     AX = B80Fh
  1694.     CX = size of return data buffer
  1695.     ES:DI -> return data buffer
  1696. Return: AX = status
  1697.          00h     network started
  1698.          nonzero network not started
  1699.     CX = number of bytes returned in buffer
  1700.     ES:DI buffer filled
  1701.  
  1702. Format of return data buffer:
  1703. Offset    Size    Description
  1704.  00h    BYTE    major version
  1705.  01h    BYTE    minor version
  1706.  02h    WORD    configuration flags given when network was started (see below)
  1707.  04h 15 BYTEs    NET START machine name (space padded)
  1708.  13h    BYTE    00h
  1709.  14h 9    BYTEs    NET START domain name (NULL padded)
  1710.  1Dh    BYTE    00h
  1711.  1Eh 32 BYTEs    /WRK heuristics string (space padded, not terminated)
  1712.  3Eh    WORD    /SRV value
  1713.  40h    WORD    /ASG value
  1714.  42h    WORD    /NBC value
  1715.  44h    WORD    /NBS value
  1716.  46h    WORD    /BBC value
  1717.  48h    WORD    /BBS value
  1718.  4Ah    WORD    /PBC value
  1719.  4Ch    WORD    /PBS value
  1720.  4Eh    WORD    /PFS value
  1721.  50h    WORD    /PFT value
  1722.  52h    WORD    /PWT value
  1723.  54h    WORD    /KUC value
  1724.  56h    WORD    /KST value
  1725.  58h    WORD    /NVS value
  1726.  5Ah    WORD    /NMS value
  1727.  5Ch    WORD    /NDB value
  1728.  5Eh    WORD    /MBI value
  1729.  60h    BYTE    NetBIOS name number for machine name
  1730.  61h    BYTE    NetBIOS name number for domain name
  1731.  62h    WORD    NetBIOS sessions required for configuration
  1732.  64h    WORD    NetBIOS commands required for configuration
  1733.  66h    WORD    NetBIOS names required for configuration
  1734.  68h 128 BYTEs    NET START path (LANROOT)
  1735.  E8h    BYTE    00h
  1736.  
  1737. Bitfields for configuration flags:
  1738.  bit 0    /NVS nonzero
  1739.  bit 1    /NMS nonzero
  1740.  bit 2    /API
  1741.  bit 3    /HIM
  1742.  bit 4    /LIM
  1743.  bit 5    /ENC
  1744.  bit 6    /POP
  1745.  bit 7    /EMS
  1746.  bit 8    /RPL
  1747.  bits 9-12 reserved
  1748.  bit 13 RDR started
  1749.  bit 14 RCV started
  1750.  bit 15 User is currently logged on
  1751. --------N-2FB900-----------------------------
  1752. INT 2F - PC Network RECEIVER.COM - INSTALLATION CHECK
  1753.     AX = B900h
  1754. Return: AL = 00h if not installed
  1755.          FFh if installed
  1756. --------N-2FB901-----------------------------
  1757. INT 2F - PC Network RECEIVER.COM - GET RECEIVER.COM INT 2F HANDLER ADDRESS
  1758.     AX = B901h
  1759. Return: AL = ???
  1760.     ES:BX -> RECEIVER.COM INT 2F handler
  1761. Note:    allows more efficient execution by letting the caller bypass any other
  1762.       INT 2F handlers which have been added since RECEIVER.COM was
  1763.       installed
  1764. --------N-2FB903-----------------------------
  1765. INT 2F - PC Network RECEIVER.COM - GET RECEIVER.COM POST ADDRESS
  1766.     AX = B903h
  1767. Return: ES:BX -> POST handler
  1768. SeeAlso: AX=B803h,AX=B904h
  1769. --------N-2FB904-----------------------------
  1770. INT 2F - PC Network RECEIVER.COM - SET RECEIVER.COM POST ADDRESS
  1771.     AX = B904h
  1772.     ES:BX -> new POST handler
  1773. SeeAlso: AX=B804h,AX=B903h
  1774. --------N-2FB905-----------------------------
  1775. INT 2F - PC Network RECEIVER.COM - GET FILENAME
  1776.     AX = B905h
  1777.     DS:BX -> 128-byte buffer for filename 1
  1778.     DS:DX -> 128-byte buffer for filename 2
  1779. Return: buffers filled from RECEIVER.COM internal buffers
  1780. Note:    use of filenames is unknown, but one appears to be for storing messages
  1781. SeeAlso: AX=B906h
  1782. --------N-2FB906-----------------------------
  1783. INT 2F - PC Network RECEIVER.COM - SET FILENAME
  1784.     AX = B906h
  1785.     DS:BX -> 128-byte buffer for filename 1
  1786.     DS:DX -> 128-byte buffer for filename 2
  1787. Return: RECEIVER.COM internal buffers filled from user buffers
  1788. Note:    use of filenames is unknown, but one appears to be for storing messages
  1789. SeeAlso: AX=B905h
  1790. --------N-2FB908-----------------------------
  1791. INT 2F - PC Network RECEIVER.COM - UNLINK KEYBOARD HANDLER
  1792.     AX = B908h
  1793.     ES:BX -> INT 09 handler RECEIVER should call after it finishes INT 09
  1794. Note:    this call replaces the address to which RECEIVER.COM chains on an
  1795.       INT 09 without preserving the original value.     This allows a prior
  1796.       handler to unlink, but does not allow a new handler to be added
  1797.       such that RECEIVER gets the INT 09 first.
  1798. SeeAlso: AX=B808h
  1799. --------V-2FBC00-----------------------------
  1800. INT 2F - Windows 3.0, DOS 5+ EGA.SYS - INSTALLATION CHECK
  1801.     AX = BC00h
  1802. Return: AL = 00h not installed, OK to install
  1803.        = 01h not installed, not OK to install
  1804.        = FFh installed
  1805.         BX = 5456h ("TV")
  1806. Note:    AH=BCh is the default value, which may be changed by a command line
  1807.       parameter to any value between 80h and FFh
  1808. SeeAlso: AX=BC06h"EGA",INT 10/AH=FAh"EGA"
  1809. --------s-2FBC00BX3F3F-----------------------C22!
  1810. INT 2F - MediaVision MVSOUND.SYS - INSTALLATION CHECK
  1811.     AX = BC00h
  1812.     BX = 3F3Fh ('??')
  1813.     CX = 0000h
  1814.     DX = 0000h
  1815. Return: if installed, BX XOR CX XOR DX = 4D56h ('MV')
  1816. Program: MVSOUND.SYS is a driver for the MediaVision ProAudio Spectrum family
  1817.       of sound boards; its primary programmer was Bryan Crane
  1818. SeeAlso: AX=BC01h"MVSOUND",AX=BC02h,AX=BC03h,AX=BC04h,AX=BC06h"MVSOUND"
  1819. --------s-2FBC01BX6D20-----------------------C22!
  1820. INT 2F - MediaVision MVSOUND.SYS - GET VERSION
  1821.     AX = BC01h
  1822.     BX = 6D20h ('m ')
  1823.     CX = 2076h (' v')
  1824.     DX = 2020h ('  ')
  1825. Return: BX = ASCII major version (leading zeros significant)
  1826.     CX = ASCII minor version (leading zeros significant)
  1827. --------s-2FBC02-----------------------------C22!
  1828. INT 2F - MediaVision MVSOUND.SYS - GET STATE TABLE POINTER
  1829.     AX = BC02h
  1830. Return: BX:DX -> state table
  1831. SeeAlso: AX=BC00h"MVSOUND",AX=BC03h
  1832. --------s-2FBC03-----------------------------C22!
  1833. INT 2F - MediaVision MVSOUND.SYS - GET FUNCTION TABLE POINTER
  1834.     AX = BC03h
  1835. Return: BX:DX -> function table
  1836. SeeAlso: AX=BC00h"MVSOUND",AX=BC02h
  1837. --------s-2FBC04-----------------------------C22!
  1838. INT 2F - MediaVision MVSOUND.SYS - GET DMA AND IRQ CHANNELS
  1839.     AX = BC04h
  1840. Return: AX = 4D56h ('MV')
  1841.     BL = DMA channel
  1842.     CL = IRQ number
  1843. SeeAlso: AX=BC00h"MVSOUND",AX=BC01h"MVSOUND"
  1844. --------V-2FBC06-----------------------------
  1845. INT 2F U - MS Windows 3.0, DOS 5+ EGA.SYS - GET VERSION INFO
  1846.     AX = BC06h
  1847. Return: BX = 5456h ("TV")
  1848.     CH = major version
  1849.     CL = minor version
  1850.     DL = revision
  1851. SeeAlso: AX=BC00h"EGA",INT 10/AH=FAh"EGA"
  1852. --------s-2FBC06-----------------------------C22!
  1853. INT 2F - MediaVision MVSOUND.SYS - GET STATUS STRING
  1854.     AX = BC06h
  1855. Return: AX = 4D56h ('MV')
  1856.     DX:BX -> status string (first byte 0Ch if no status message to display)
  1857. SeeAlso: AX=BC00h"MVSOUND",AX=BC01h"MVSOUND",AX=BC0Bh"MVSOUND"
  1858. --------s-2FBC0B-----------------------------C22!
  1859. INT 2F - MediaVision MVSOUND.SYS - GET EXECUTABLE PATH
  1860.     AX = BC0Bh
  1861. Return: BX:DX -> ASCIZ path for MVPROAS.EXE, 0000h:0000h if not available
  1862. SeeAlso: AX=BC00h"MVSOUND"
  1863. --------U-2FBE00-----------------------------
  1864. INT 2F - REDVIEW - INSTALLATION CHECK
  1865.     AX = BE00h
  1866. Return: AL = FFh if installed
  1867. Program: REDVIEW is a public-domain TSR by Alexandr Novy and Petr Horak which
  1868.       copies data sent to standard output to standard error when the
  1869.       former has been redirected to a file, thus allowing the data to
  1870.       be seen on the screen at the same time it is captured in a file
  1871. --------N-2FBF00-----------------------------
  1872. INT 2F - PC LAN PROGRAM REDIRIFS.EXE internal - INSTALLATION CHECK
  1873.     AX = BF00h
  1874. Return: AL = FFh if installed
  1875. --------N-2FBF01-----------------------------
  1876. INT 2F U - PC LAN PROGRAM REDIRIFS.EXE internal - ???
  1877.     AX = BF01h
  1878.     ???
  1879. Return: ???
  1880. --------N-2FBF80-----------------------------
  1881. INT 2F - PC LAN PROG REDIR.SYS internal - SET REDIRIFS ENTRY POINT
  1882.     AX = BF80h
  1883.     ES:DI -> FAR entry point to IFS handler in REDIRIFS
  1884. Return: AL = FFh if installed
  1885.         ES:DI -> internal workspace
  1886. Note:    all future IFS calls to REDIR.SYS are passed to the ES:DI entry point
  1887. --------F-2FC0-------------------------------
  1888. INT 2F - MTEZ XpressFax Hardware TSR (CLASS2) - API
  1889.     AH = C0h
  1890.     AL = function code (01h to 15h)
  1891. Return: ???
  1892. SeeAlso: AX=C000h"MTEZ",AX=CB00h"MTEZ"
  1893. --------N-2FC000-----------------------------
  1894. INT 2F - Novell ODI Link Support Layer (LSL.COM) - INSTALLATION CHECK
  1895.     AX = C000h
  1896. Return: AL = FFh if installed
  1897.         DX:BX -> FAR entry point (see below)
  1898.         ES:SI -> signature string "LINKSUP$"
  1899. Notes:    LSL.COM may use any multiplex number between C0h and FFh; it searches
  1900.       for itself in that range, and installs using the first free multiplex
  1901.       number in the range if not already loaded.
  1902.     on return, ES = DX for LSL v1.10; LSL makes use of this in its search
  1903.       for a previous installation
  1904.  
  1905. Call LSL entry point with:
  1906.     BX = 0001h "Request MLID Registration"
  1907.         ES:SI -> ???
  1908.         ???
  1909.         Return: AX = completion code (see below)
  1910.             DS:DI -> LSL information block
  1911.     BX = 0002h get support entry points
  1912.         ES:SI -> buffer for entry point record (see below)
  1913.         Return: ES:SI buffer filled
  1914.     BX = 0003h "Request MLID API entry point"
  1915.         Return: ES:SI -> MLID API entry point
  1916.                  (call with BX=function 00h-10h, not range-checked)
  1917. Notes:    LSL v1.10 executes BX=0003h for all other values of BX
  1918.     see "Novell LAN Driver Developer's Guide, Volume III" for details of
  1919.       function 0001h
  1920.  
  1921. Values for completion code:
  1922.  0000h    successful
  1923.  8001h    out of resources
  1924.  8002h    bad parameter
  1925.  8003h    no more items
  1926.  8004h    item not present
  1927.  8005h    failed
  1928.  8006h    receive overflow
  1929.  8007h    canceled
  1930.  8008h    bad command
  1931.  8009h    duplicate entry
  1932.  800Ah    no such handler
  1933.  800Bh    no such driver
  1934.  
  1935. Format of entry point record:
  1936. Offset    Size    Description
  1937.  00h    DWORD    pointer to protocol support entry point in LSL (see below)
  1938.  04h    DWORD    pointer to general support entry point in LSL (see below)
  1939.  
  1940. Call protocol support entry point with:
  1941.     BX = function number
  1942.         0000h ???
  1943.         0001h ???
  1944.         0002h ???
  1945.         0003h "ScheduleAESEvent"
  1946.         ES:SI -> AES ECB to be scheduled (see below for format)
  1947.         Return: ES,SI preserved
  1948.         0004h "CancelAESEvent"
  1949.         ES:SI -> ECB to be cancelled (see below for format)
  1950.         Return: ES,SI preserved
  1951.         0005h "GetIntervalMarker"
  1952.         Return: DX:AX = current interval marker in milliseconds
  1953.             all other registers preserved
  1954.         0006h "RegisterStack"
  1955.         AX = logical board number
  1956.         ES:SI -> bound stack info structure (see below)
  1957.         Return: BX = assigned Stack ID if AX=0000h
  1958.         0007h "DeRegisterStack"
  1959.         AX = protocol stack's assigned Stack ID
  1960.         0008h "RegisterDefaultStack"
  1961.         AX = logical board number
  1962.         ES:SI -> stack info structure (see below)
  1963.         0009h "DeRegisterDefaultStack"
  1964.         AX = logical board number
  1965.         000Ah "RegisterPrescanStack"
  1966.         AX = logical board number
  1967.         ES:SI -> stack info structure (see below)
  1968.         000Bh "DeRegisterPrescanStack"
  1969.         AX = logical board number
  1970.         000Ch "SendPacket"
  1971.         ES:SI -> send ECB
  1972.         Return: interrupts disabled
  1973.         000Dh ???
  1974.         000Eh ???
  1975.         000Fh ???
  1976.         0010h "GetStackIDFromName"
  1977.         ES:SI -> counted NUL-terminated protocol name (max 15 chars)
  1978.         Return: BX = Stack ID if AX=0000h
  1979.         0011h "GetPIDFromStackIDBoard"
  1980.         AX = Stack ID for protocol
  1981.         CX = logical board number
  1982.         ES:SI -> 6-byte buffer for protocol ID
  1983.         0012h "GetMLIDControlEntry"
  1984.         AX = logical board number
  1985.         Return: ES:SI -> MLID control handler (see below) if AX=0000h
  1986.         0013h "GetProtocolControlEntry"
  1987.         AX = Stack ID or
  1988.             FFFEh Prescan stack
  1989.                 CX = logical board number
  1990.             FFFFh default protocol
  1991.                 CX = logical board number
  1992.         Return: ES:SI -> protocol stack control entry point if AX=0000h
  1993.                 (see below)
  1994.         0014h "GetLSLStatistics"
  1995.         Return: AX = 0000h (successful)
  1996.             ZF set
  1997.             ES:SI -> LSL statistics table (see below)
  1998.         0015h "BindStack"
  1999.         AX = protocol stack's assigned Stack ID
  2000.         CX = logical board number
  2001.         0016h "UnbindStack"
  2002.         AX = protocol stack's assigned Stack ID
  2003.         CX = logical board number
  2004.         0017h "AddProtocolID"
  2005.         AX = frame type ID code
  2006.         ES:SI -> 6-byte protocol ID
  2007.         CX:DI -> counted NUL-terminated short protocol name (max 15 ch)
  2008.         0018h "RelinquishControl"
  2009.         Return: after LSL performs any necessary background processing
  2010.         0019h "GetLSLConfiguration"
  2011.         Return: AX = 0000h (successful)
  2012.             ZF set
  2013.             ES:SI -> LSL configuration table (see below)
  2014.         001Ah "GetTickMarker"
  2015.         Return: AX = number of 55ms ticks since LSL loaded
  2016.             BX destroyed
  2017. Return: AX = completion code (see above)
  2018.     ZF set if successful
  2019.     SS:SP, DS, BP preserved; most other registers may be destroyed
  2020.  
  2021. Call general support entry point with:
  2022.     BX = function number
  2023.         0000h "Allocate Memory" (obsolete)
  2024.          always returns AX=8008h (BAD_COMMAND)
  2025.         0001h "Free Memory" (obsolete)
  2026.          always returns AX=8008h (BAD_COMMAND)
  2027.         0002h "Realloc Memory" (obsolete)
  2028.          always returns AX=8008h (BAD_COMMAND)
  2029.         0003h "Memory Statistics" (obsolete)
  2030.          always returns AX=8008h (BAD_COMMAND)
  2031.         0004h "Add Memory To Pool" (obsolete)
  2032.          always returns AX=8008h (BAD_COMMAND)
  2033.         0005h "AddGeneralService"
  2034.         ES:SI -> General Service Control Block (see below)
  2035.         0006h "RemoveGeneralService"
  2036.         ES:SI -> General Service Control Block (see below)
  2037.         0007h "GetNETcfgPath"
  2038.         Return: AX = 0000h (successful)
  2039.             DS:DX -> ASCIZ pathname for NET.CFG
  2040.         0008h U ???     (in LSL 1.10)
  2041.         Return: AX = 0000h
  2042.             ES:SI -> ??? (a 22-byte data area)
  2043.         000Ah "GetCriticalSectionStatus"
  2044.         Return: BX = total outstanding calls to "StartCriticalSection"
  2045.         000Bh "ServiceEvents"
  2046.         interrupts disabled
  2047.         Return: interrupts disabled
  2048.         0010h "GetStackECB"
  2049.         DS:DI -> Lookahead structure (see below)
  2050.         interrupts disabled
  2051.         Return: ES:SI -> ECB if successful (AX=0000h,ZF set)
  2052.             interrupts disabled
  2053.         8000h-FFFFh reserved for user general service providers
  2054. Return: AX = completion code (see above)
  2055.     ZF set if successful
  2056.     SS:SP, DS, BP preserved
  2057.  
  2058. Call MLID control handler with:
  2059.     AX = logical board number
  2060.     BX = function number
  2061.         0000h "GetMLIDConfiguration"
  2062.         Return: ES:SI -> MLID's configuration table if successful
  2063.                 (see below for format)
  2064.         0001h "GetMLIDStatistics"
  2065.         Return: ES:SI -> MLID's statistics table if successful
  2066.                 (see below for format)
  2067.         0002h "AddMulticastAddress"
  2068.         ES:SI -> 6-byte multicast address to add
  2069.         0003h "DeleteMulticastAddress"
  2070.         ES:SI -> 6-byte multicast address to delete
  2071.         0005h "MLIDShutdown"
  2072.         CX = type
  2073.             0000h permanent (also deregisters from LSL)
  2074.             other temporary (shutdown hardware only)
  2075.         0006h "MLIDReset" reinitialize board / restart from temp shutdown
  2076.         0007h "Create Connection" (obsolete?)
  2077.         ???
  2078.         0008h "Delete Connection" (obsolete?)
  2079.         ???
  2080.         0009h "SetLookAheadSize"
  2081.         CX = requested lookahead size (00h-80h)
  2082.         0010h "PromiscuousChange"
  2083.         CX = what to receive promiscuously
  2084.             bit 0: MAC frames
  2085.             bit 1: non-MAC frames
  2086.         0011h "RegisterReceiveMonitor"
  2087.         CX = subfunction
  2088.             0000h disable receive monitoring
  2089.             else  enable receive monitoring
  2090.         ES:SI -> monitor receive routine
  2091.         ES:DI -> monitor transmit routine
  2092.         0012h "Driver Poll" (obsolete?)
  2093.         ???
  2094. Return: AX = completion code (see above)
  2095.     ZF set if successful
  2096. Note:    not all boards/MLIDs support function 0010h; see bit 13 in the MLID
  2097.       mode flags field of the MLID's configuration table
  2098.  
  2099. Call protocol stack control entry point with:
  2100.     BX = function number
  2101.         0000h "GetProtocolStackConfiguration"
  2102.         Return: ES:SI -> protocol stack's configuration table
  2103.                 (see below)
  2104.         0001h "GetProtocolStackStatistics"
  2105.         Return: ES:SI -> protocol stack's statistics table (see below)
  2106.         0002h "BindToMLID"
  2107.         CX = board number to bind to
  2108.         ES:SI -> implementation-dependant parameter string
  2109.         0003h "UnBindFromMLID"
  2110.         CX = board number from which protocol should unbind
  2111.         ES:SI -> optional implementation-dependant parameter string
  2112.         0004h "MLIDDeRegistered"
  2113.         CX = board number that has de-registered from LSL
  2114. Return: AX = status
  2115.         0000h successful
  2116.         else implementation-dependant error codes
  2117.     ZF set if successful
  2118.     SS:SP, DS, BP preserved
  2119.  
  2120. Format of AES ECB:
  2121. Offset    Size    Description
  2122.  00h    DWORD    "AESLink" pointer used by LSL for list management
  2123.  04h    DWORD    number of milliseconds to wait
  2124.  08h    DWORD    "AESStatus" (is set to 00000000h when AES ESR is invoked)
  2125.  0Ch    DWORD    -> function to be invoked when time expires
  2126.         ES:SI will point to this structure on entry,
  2127.         DS, BP, and SS:SP must be preserved.
  2128.  
  2129. Format of LSL Configuration Table:
  2130. Offset    Size    Description
  2131.  00h    BYTE    major version of configuration table
  2132.  01h    BYTE    minor version of configuration table (decimal, 0-99)
  2133.  02h  8 BYTEs    reserved
  2134.  0Ah    BYTE    LSL major version (decimal)
  2135.  0Bh    BYTE    LSL minor version (decimal, 0-99)
  2136. ---LSL 1.0x ---
  2137.  0Ch 14 BYTEs    reserved
  2138. ---LSL 1.10+ ---
  2139.  0Ch    WORD    maximum number of boards which LSL can handle
  2140.  0Eh    WORD    maximum number of protocol IDs which LSL can handle
  2141.  10h 12 BYTES    reserved
  2142.  
  2143. Format of LSL Statistics Table:
  2144. Offset    Size    Description
  2145.  00h    BYTE    major version of statistics table format
  2146.  01h    BYTE    minor version of statistics table format (decimal, 0-99)
  2147.  02h    WORD    "GenericCounters" number of counters in static portion of
  2148.         table
  2149.  04h    DWORD    "ValidCountersMask" bit mask indicating which generic
  2150.         counters are actually used.  Bit 31 = TotalTxPackets, bit 30
  2151.         is the next field, etc.
  2152.  08h    DWORD    "TotalTxPackets" total SendPacket requests made
  2153.  0Ch    DWORD    reserved
  2154.  10h    DWORD    reserved
  2155.  14h    DWORD    "AESEventsCount" number of completed AES events
  2156.  18h    DWORD    "PostponedEvents" number of events postponed due to critical
  2157.         sections inside the MLIDs
  2158.  1Ch    DWORD    "CancelAESFailures" number of times CancelAESEvent failed
  2159.  20h    DWORD    reserved
  2160.  24h    DWORD    reserved
  2161.  28h    DWORD    "TotalRxPackets" total number of GetStackECB requests
  2162.  2ch    DWORD    "UnclaimedPackets" total number of packets not consumed by a
  2163.         protocol stack
  2164.  30h    WORD    "NumberCustom" number of custom variables that follow
  2165.  32h  N DWORDs    custom counters
  2166.       N DWORDs    -> CustomCounterStrN (one per custom counter)
  2167.     var    length-prepended and NULL terminated string for Counter 0
  2168.     ...
  2169.     var    length-prepended and NULL terminated string for Counter N-1
  2170.  
  2171. Format of Protocol Stack Statistics Table:
  2172. Offset    Size    Description
  2173.  00h    BYTE    statistics table major version
  2174.  01h    BYTE    statistics table minor version (decimal, 0-99)
  2175.  02h    WORD    number of generic counters following
  2176.  04h    DWORD    "ValidCountersMask" (bitmask, bit 31 is TotalTxPackets)
  2177.  08h    DWORD    TotalTxPackets
  2178.  0ch    DWORD    TotalRxPackets
  2179.  10h    DWORD    IgnoredRxPackets
  2180.  14h    WORD    number of custom counters
  2181.  16h  N DWORDs    custom counters
  2182.       N DWORDs    -> CustomCounterStrN (one per custom counter)
  2183.     var    length-prepended and NULL terminated string for Counter 0
  2184.     ...
  2185.     var    length-prepended and NULL terminated string for Counter N-1
  2186.  
  2187. Format of Protocol Stack Configuration Table:
  2188. Offset    Size    Description
  2189.  00h    BYTE    configuration table major version
  2190.  01h    BYTE    configuration table minor version (decimal, 0-99)
  2191.  02h    DWORD    -> counted NUL-terminated long descriptive name for protocol
  2192.  06h    DWORD    -> counted NUL-terminated short name for protocol (15 chars)
  2193.  0Ah    BYTE    protocol stack major version
  2194.  0Bh    BYTE    protocol stack minor version (decimal, 0-99)
  2195.  0Ch 16 BYTEs    reserved for future use
  2196.  
  2197. Format of MLID Configuration Table:
  2198. Offset    Size    Description
  2199.  00h 26 BYTEs    signature 'HardwareDriverMLID         ' (8 spaces on end)
  2200.  1ah    BYTE    configuration table major version
  2201.  1bh    BYTE    configuration table minor version (decimal, 0-99)
  2202.  1ch  6 BYTEs    node address
  2203.  22h    WORD    MLID mode flags (see below)
  2204.  24h    WORD    board number
  2205.  26h    WORD    board instance (if more than one of same board installed)
  2206.  28h    WORD    maximum packet size
  2207.  2Ah    WORD    BestDataSize
  2208.  2Ch    WORD    WorstDataSize
  2209.  2Eh    DWORD    -> counted NUL-terminated long name for NIC
  2210.  32h    DWORD    -> counted NUL-terminated short name for NIC (8 chars max)
  2211.  36h    DWORD    -> counted NUL-terminated Frame and Media type
  2212.  3Ah    WORD    reserved (0000h)
  2213.  3Ch    WORD    frame type ID
  2214.  3Eh    WORD    TransportTime (milliseconds)
  2215.  40h    DWORD    -> SourceRouteHandler for TokenRing. (Used by ROUTE.COM)
  2216.  44h    WORD    lookahead size
  2217.  46h    WORD    line speed (Mbps if high bit clear, else Kbps)
  2218.  48h    WORD    QueueDepth
  2219.  4Ch  6 BYTEs    reserved (0)
  2220.  54h    BYTE    driver major version
  2221.  55h    BYTE    driver minor version (decimal, 0-99)
  2222.  56h    WORD    flags
  2223.         bits 10-9: specialized multicast support
  2224.             00 = Group addressing is default for medium
  2225.             01 = Invalid
  2226.             10 = Filter group address in MLID.
  2227.             11 = Adapter filters group address.
  2228.         bit 2: supports Micro Channel cards
  2229.         bit 1: supports ISA cards
  2230.         bit 0: supports EISA cards
  2231.  58h    WORD    send retries
  2232.  5Ah    DWORD    ConfigTableLink
  2233.  5Eh    WORD    MLID sharing flags (see below)
  2234.  60h    WORD    slot number
  2235.  62h    WORD    I/O address 1
  2236.  64h    WORD    I/O range 1
  2237.  66h    WORD    I/O address 2
  2238.  68h    WORD    I/O range 2
  2239.  6Ah    DWORD    memory address 1
  2240.  6Eh    WORD    memory size 1
  2241.  70h    DWORD    memory address 2
  2242.  74h    WORD    memory size 2
  2243.  76h    BYTE    interrupt line 1
  2244.  77h    BYTE    interrupt line 2
  2245.  78h    BYTE    DMA line 1
  2246.  79h    BYTE    DMA line 2
  2247.  
  2248. Bitfields for MLID mode flags:
  2249.  bit 15 MLID supports Octet Bit Reversal
  2250.  bit 14 node address is non-canonical
  2251.  bit 13 promiscuous mode is supported
  2252.  bit 12-8 reserved
  2253.  bit 7    LDataSize field in LookAhead structure supported
  2254.  bit 6    raw send supported
  2255.  bit 5    MLID needs to be polled by LSL
  2256.  bit 4    reserved (0)
  2257.  bit 3    multicasting is supported
  2258.  bit 2    not currently used by DOS ODI, set to 0.
  2259.  bit 1    network card uses DMA.
  2260.  bit 0    RealDriverBit, always set to 1.
  2261.  
  2262. Bitfields for MLID sharing flags:
  2263.  bit 8    NIC can share DMA2
  2264.  bit 7    NIC can share DMA1
  2265.  bit 6    NIC can share IRQ2
  2266.  bit 5    NIC can share IRQ1
  2267.  bit 4    NIC can share Memory2
  2268.  bit 3    NIC can share Memory1
  2269.  bit 2    NIC can share IO2
  2270.  bit 1    NIC can share IO1
  2271.  bit 0    MLID is currently shut down
  2272.  
  2273. Format of MLID Statistics Table:
  2274. Offset    Size    Description
  2275.  00h    BYTE    driver statistics table major version
  2276.  01h    BYTE    driver statistics table minor version (decimal, 0-99)
  2277.  02h    WORD    number of generic counters (typically 13)
  2278.  04h    DWORD    "ValidCountersMask" (bit mask, bit 31 is TotalTxCount)
  2279.  08h    DWORD    TotalTxCount
  2280.  0Ch    DWORD    TotalRxCount
  2281.  10h    DWORD    NoECBAvailableCount
  2282.  14h    DWORD    TxTooBigCount
  2283.  18h    DWORD    TxTooSmallCount
  2284.  1ch    DWORD    RxOverflowCount
  2285.  20h    DWORD    RxTooBigCount
  2286.  24h    DWORD    RxTooSmallCount
  2287.  28h    DWORD    TxMiscCount
  2288.  2ch    DWORD    RxMiscCount
  2289.  30h    DWORD    TxRetryCount
  2290.  34h    DWORD    RxChecksumErrorCount
  2291.  38h    DWORD    RxMismatchCount
  2292.  3Ch    WORD    number of custom counters
  2293.  3Eh  N DWORDs    custom counters
  2294.       N DWORDs    -> CustomCounterStrN (one per custom counter)
  2295.     var    length-prepended and NULL terminated string for Counter 0
  2296.     ...
  2297.     var    length-prepended and NULL terminated string for Counter N-1
  2298.  
  2299. Format of bound stack info structure:
  2300. Offset    Size    Description
  2301.  00h    DWORD    -> protocol stack's short name (counted, NUL-terminated)
  2302.  04h    DWORD    -> receive handler
  2303.  08h    DWORD    -> control handler
  2304.  
  2305. Format of stack info structure:
  2306. Offset    Size    Description
  2307.  00h    DWORD    -> receive handler
  2308.  04h    DWORD    -> control handler
  2309.  
  2310. Format of General Service Control Block:
  2311. Offset    Size    Description
  2312.  00h    DWORD    -> next GSCB (maintained internally by LSL)
  2313.  04h    DWORD    -> entry point for general service handler
  2314.  08h    WORD    command code for this general service (8000h-FFFFh)
  2315. Note:    the control block must not be altered or deallocated until the general
  2316.       service is removed
  2317.  
  2318. Format of Lookahead structure:
  2319. Offset    Size    Description
  2320.  00h    DWORD    -> Media header
  2321.  04h    DWORD    -> lookahead buffer
  2322.  08h    WORD    length of lookahead buffer
  2323.  0Ah  6 BYTEs    protocol ID
  2324.  10h    WORD    logical board number
  2325.  12h    WORD    lookahead size
  2326. --------f-2FC000-----------------------------
  2327. INT 2F - FN32 32 character filename utilities - INSTALLATION CHECK
  2328.     AX = C000h
  2329. Return: AL = FFh if installed
  2330.        ES:DI -> signature string "FN32 32CHAR TSR"
  2331. Program: FN32 is a TSR which supports 32 character filenames under PC/MS-DOS
  2332. Note:    the TSR intercepts INT 21 calls and performs filename substitution by
  2333.       managing dictionary files in each directory which contains long
  2334.       filenames
  2335. --------M-2FC000-----------------------------
  2336. INT 2F - QMR - INSTALLATION CHECK
  2337.     AX = C000h
  2338. Return: AL = FFh if installed
  2339.         ES:DI -> signature string "QMR1!"
  2340. Program: QMR (Cove Software, Quick Mouse Reset) monitors the mouse
  2341.       service interrupt (int 33h) and substitutes a fast software
  2342.       reset (mouse fn 21h) for the slow hardware reset (mouse fn 0).
  2343. Note:    QMR may use any multiplex number between C0h and FFh; it searches
  2344.      for itself in that range, and installs using the first free multiplex
  2345.      number in the range if not already loaded.
  2346. SeeAlso: AX=C001h"QMR",AX=C002h"QMR",AX=C003h"QMR"
  2347. --------V-2FC000-----------------------------
  2348. INT 2F - VGAsave v1.93 - INSTALLATION CHECK
  2349.     AX = C000h
  2350. Return: AL = FFh if installed
  2351.         BX = segment of resident code
  2352. Program: VGAsave is a freeware VGA-specific, mouse-aware screenblanker by Bill
  2353.       Javurek
  2354. Note:    VGAsave may use any AH value from C0h through FFh; the transient
  2355.       portion of VGAsave compares the first 38 bytes of the resident code
  2356.       (addressed through BX) against its own copy of the resident code to
  2357.       complete the installation check
  2358. Index:    screen saver;VGAsave
  2359. --------F-2FC000BX444B-----------------------
  2360. INT 2F - MTEZ XpressFax Hardware TSR (CLASS2) - INSTALLATION CHECK
  2361.     AX = C000h
  2362.     BX = 444Bh
  2363.     CX = 4A4Eh
  2364. Return: AL = status
  2365.         00h not installed, OK to install
  2366.         FFh installed
  2367.         BX = 646Bh
  2368.         CX = 6A6Eh
  2369. Note:    this TSR will use any free multiplex number from C0h to FFh
  2370. SeeAlso: AH=C0h"MTEZ"
  2371. --------V-2FC000-----------------------------
  2372. INT 2F - AD-DOS - INSTALLATION CHECK
  2373.     AX = C000h
  2374. Return: AL = FFh if installed
  2375.         BX = 4144h ('AD')
  2376.         CX = 2D44h ('-D')
  2377.         DX = 4F53h ('OS')
  2378. Program: AD-DOS is the DOS version of the After Dark screen blanker for
  2379.       MS Windows
  2380. Note:    AH=C0h is the default multiplex number; if this is already in use,
  2381.       After Dark will try successive values up to AH=FFh
  2382. SeeAlso: AX=C001h,AX=C003h,AX=C005h,AX=C007h,AX=C009h,AX=C020h
  2383. Index:    screen saver;AD-DOS
  2384. ----------2FC000-----------------------------
  2385. INT 2F U - WANG_ER.COM - INSTALLATION CHECK
  2386.     AX = C000h
  2387. Return: AL = FFh if installed
  2388.         ES = segment of resident code
  2389. Program: WANG_ER is a TSR from Compaq which permits Compaq systems equipped
  2390.       with 3-mode floppy drives to read Wang document diskettes
  2391. Note:    AH=C0h is the default; WANG_ER scans all multiplex numbers from C0h to
  2392.       FFh for a free spot on installation.    The installation check is
  2393.       completed by comparing the resident code with the copy in the
  2394.       transient program
  2395. ----------2FC000-----------------------------
  2396. INT 2F - APSIHOOK.SYS - INSTALLATION CHECK
  2397.     AX = C000h
  2398. Return: AL = FFh if multiplex number in use
  2399.         ES:DI -> ASCIZ signature "ASPIHOOK" if ASPIHOOK.SYS installed
  2400. Program: ASPIHOOK is a device driver for monitoring SCSI activity through an
  2401.       ASPI host manager; it is part of the Personal Measure system
  2402.       activity monitor from Spirit of Performance, Inc.
  2403. Note:    AH=C0h is the default; ASPIHOOK searches for a free multiplex number
  2404.       between C0h and FFh on which to install itself
  2405. --------M-2FC001-----------------------------
  2406. INT 2F - QMR - REQUEST HARDWARE RESET
  2407.     AX = C001h
  2408. Return: ES = QMR code segment
  2409.     AL destroyed
  2410. Desc:    this function is used to force a full mouse reset when QMR is installed
  2411. SeeAlso: AX=C000h"QMR",AX=C002h"QMR"
  2412. --------V-2FC001ES0000-----------------------
  2413. INT 2F - AD-DOS - GET RESIDENT CODE SEGMENT
  2414.     AX = C001h
  2415.     ES = 0000h
  2416. Return: AL = 00h if successful
  2417.         ES = AD-DOS TSR Code Segment
  2418. SeeAlso: AX=C000h"AD-DOS"
  2419. Index:    screen saver;AD-DOS
  2420. --------V-2FC002-----------------------------
  2421. INT 2F - AD-DOS - CHECK FOR NEW INPUT
  2422.     AX = C002h
  2423. Return: AL = 00h if succesful
  2424.         BX = status
  2425.         0000h no input since last check
  2426.         0001h new input available
  2427. Note:    this call also resets the new-input flag
  2428. SeeAlso: AX=C000h"AD-DOS",AX=C004h
  2429. Index:    screen saver;AD-DOS
  2430. --------M-2FC002-----------------------------
  2431. INT 2F - QMR - DISABLE QMR
  2432.     AX = C002h
  2433. Return: ES = QMR code segment
  2434.     AL destroyed
  2435. Desc:    this call temporarily disables QMR
  2436. SeeAlso: AX=C000h"QMR",AX=C003h"QMR"
  2437. --------V-2FC003-----------------------------
  2438. INT 2F - AD-DOS - SET MINUTES TO WAIT
  2439.     AX = C003h
  2440.     BX = minutes to wait before blanking screen
  2441. Return: AL = 00h if successful
  2442. Program: AD-DOS is the DOS version of the After Dark screen blanker for
  2443.       MS Windows
  2444. Notes:    AH=C0h is the default multiplex number; if this is already in use,
  2445.       After Dark will try successive values up to AH=FFh
  2446.     this call also resets the delay timer
  2447. SeeAlso: AX=C000h"AD-DOS",AX=C004h
  2448. Index:    screen saver;AD-DOS
  2449. --------M-2FC003-----------------------------
  2450. INT 2F - QMR - ENABLE QMR
  2451.     AX = C003h
  2452. Return: ES = QMR code segment
  2453.     AL destroyed
  2454. Desc:    this call enables QMR after it has been disabled
  2455. SeeAlso: AX=C000h"QMR",AX=C002h"QMR"
  2456. --------V-2FC004-----------------------------
  2457. INT 2F - AD-DOS - GET MINUTES TO WAIT
  2458.     AX = C004h
  2459. Return: AL = 00h if succesful
  2460.         BX = minutes to wait before blanking screen
  2461. SeeAlso: AX=C000h"AD-DOS",AX=C003h
  2462. Index:    screen saver;AD-DOS
  2463. --------V-2FC005-----------------------------
  2464. INT 2F - AD-DOS - SET BLANKER STATUS
  2465.     AX = C005h
  2466.     BX = new state (0000h inactive, 0001h active) (default 0001h)
  2467. Return: AL = 00h if successful
  2468. SeeAlso: AX=C006h
  2469. Index:    screen saver;AD-DOS
  2470. --------V-2FC006-----------------------------
  2471. INT 2F - AD-DOS - GET BLANKER STATUS
  2472.     AX = C006h
  2473. Return: AL = 00h if successful
  2474.         BX = current state of screen blanker (0000h inactive, 0001h active)
  2475. Program: AD-DOS is the DOS version of the After Dark screen blanker for
  2476.       MS Windows
  2477. Note:    AH=C0h is the default multiplex number; if this is already in use,
  2478.       After Dark will try successive values up to AH=FFh
  2479. SeeAlso: AX=C000h"AD-DOS",AX=C005h
  2480. Index:    screen saver;AD-DOS
  2481. --------V-2FC007-----------------------------
  2482. INT 2F - AD-DOS - SET HOT KEY
  2483.     AX = C007h
  2484.     BX = hot key
  2485.     CL = hot key shift status
  2486. Return: AL = 00h if successful
  2487. SeeAlso: AX=C008h
  2488. Index:    screen saver;AD-DOS
  2489. --------V-2FC008-----------------------------
  2490. INT 2F - AD-DOS - GET CURRENT HOT KEY
  2491.     AX = C008h
  2492. Return: AX = status
  2493.         0000h successful
  2494.         BX = Hot Key
  2495.         CL = Hot Key Shift Status
  2496.         0008h otherwise
  2497. SeeAlso: AX=C000h"AD-DOS",AX=C007h
  2498. Index:    screen saver;AD-DOS
  2499. --------V-2FC009-----------------------------
  2500. INT 2F - AD-DOS - UNBLANK MONITOR
  2501.     AX = C009h
  2502. Return: AL = 00h if successful
  2503. Program: AD-DOS is the DOS version of the After Dark screen blanker for
  2504.       MS Windows
  2505. Notes:    AH=C0h is the default multiplex number; if this is already in use,
  2506.       After Dark will try successive values up to AH=FFh
  2507.     this function works by simulating keyboard activity
  2508. Index:    screen saver;AD-DOS
  2509. --------V-2FC00A-----------------------------
  2510. INT 2F - AD-DOS - ???
  2511.     AX = C00Ah
  2512. Return: AX = status
  2513.         0000h successful
  2514.         BH = ??
  2515.         BL = ??
  2516.         000Ah failed
  2517. Index:    screen saver;AD-DOS
  2518. --------V-2FC00B-----------------------------
  2519. INT 2F - AD-DOS - ???
  2520.     AX = C00Bh
  2521. Return: AX = status
  2522.         0000h successful
  2523.         000Bh failed
  2524. Index:    screen saver;AD-DOS
  2525. --------V-2FC00C-----------------------------
  2526. INT 2F - AD-DOS - SET ??? INTERNAL FLAG TO 01h
  2527.     AX = C00Ch
  2528. Return: AX = status
  2529.         0000h successful
  2530.         000Ch failed
  2531. Program: AD-DOS is the DOS version of the After Dark screen blanker for
  2532.       MS Windows
  2533. Note:    AH=C0h is the default multiplex number; if this is already in use,
  2534.       After Dark will try successive values up to AH=FFh
  2535. Index:    screen saver;AD-DOS
  2536. --------V-2FC00E-----------------------------
  2537. INT 2F - AD-DOS - SET PASSWORD STATUS
  2538.     AX = C00Eh
  2539.     BX = new state (0000h disabled, 0001h enabled)
  2540. Return: ???
  2541. SeeAlso: AX=C000h"AD-DOS",AX=C00Fh
  2542. Index:    screen saver;AD-DOS
  2543. --------V-2FC00F-----------------------------
  2544. INT 2F - AD-DOS - GET PASSWORD STATUS
  2545.     AX = C00Fh
  2546. Return: BX = current state (0000h disabled, 0001h enabled)
  2547. SeeAlso: AX=C00Eh
  2548. Index:    screen saver;AD-DOS
  2549. --------V-2FC020-----------------------------
  2550. INT 2F - AD-DOS - GET AND RESET VxD API STATUS
  2551.     AX = C020h
  2552. Return: AL = 00h if successful
  2553.         BX = VxD API Status
  2554.         0000h no error
  2555.         0001h error
  2556.         0100h neither Windows 3.X enhanced mode nor
  2557.             Windows/386 2.x is running
  2558.         0200h VM API entry point not found (VxD not installed)
  2559. Notes:    AH=C0h is the default multiplex number; if this is already in use,
  2560.       After Dark will try successive values up to AH=FFh
  2561.     this call resets the VxD API Status to zero
  2562. SeeAlso: AX=1602h,AX=1607h
  2563. Index:    screen saver;AD-DOS
  2564. --------V-2FC050-----------------------------
  2565. INT 2F U - Explosiv 2.00 - INSTALLATION CHECK
  2566.     AX = C050h
  2567. Return: AL = 51h if installed
  2568. Program: Explosiv is a shareware animated screen blanker for DOS and Windows 3
  2569.       by Reidar Gresseth and Chris Hook
  2570. Note:    AH=C0h is the default multiplex number, but may be reconfigured to
  2571.       any value from C0h to C9h
  2572. SeeAlso: AX=C052h
  2573. Index:    screen saver;Explosiv
  2574. --------V-2FC052-----------------------------
  2575. INT 2F U - Explosiv 2.00 - UNINSTALL
  2576.     AX = C052h
  2577.     DX:BX = address to return to on successful uninstall
  2578. Return: at specified address if successful
  2579.     AL = 53h on error
  2580. Note:    specified return address must have the segment of the caller's PSP
  2581. SeeAlso: AX=C050h
  2582. Index:    screen saver;Explosiv
  2583. --------V-2FC054-----------------------------
  2584. INT 2F U - Explosiv 2.00 - GET ???
  2585.     AX = C054h
  2586. Return: AL = ???
  2587. Note:    returns value set by AX=C057h
  2588. SeeAlso: AX=C057h
  2589. Index:    screen saver;Explosiv
  2590. --------V-2FC055-----------------------------
  2591. INT 2F U - Explosiv 2.00 - SET BLANKING INTERVAL
  2592.     AX = C055h
  2593.     BX = new interval in clock ticks
  2594. Index:    screen saver;Explosiv
  2595. --------V-2FC056-----------------------------
  2596. INT 2F U - Explosiv 2.00 - SET ???
  2597.     AX = C056h
  2598.     BL = ???
  2599. Index:    screen saver;Explosiv
  2600. --------V-2FC057-----------------------------
  2601. INT 2F U - Explosiv 2.00 - SET ???
  2602.     AX = C057h
  2603.     BL = ???
  2604. SeeAlso: AX=C054h
  2605. Index:    screen saver;Explosiv
  2606. --------V-2FC058-----------------------------
  2607. INT 2F U - Explosiv 2.00 - SET ???
  2608.     AX = C058h
  2609.     BL = ???
  2610. Index:    screen saver;Explosiv
  2611. --------V-2FC059-----------------------------
  2612. INT 2F U - Explosiv 2.00 - CLEAR ???
  2613.     AX = C059h
  2614. Note:    clears flag set by AX=C05Ah
  2615. SeeAlso: AX=C05Ah
  2616. Index:    screen saver;Explosiv
  2617. --------V-2FC05A-----------------------------
  2618. INT 2F U - Explosiv 2.00 - SET ???
  2619.     AX = C05Ah
  2620.     BL = ???
  2621. Note:    sets flag cleared by AX=C059h then stores BL
  2622. SeeAlso: AX=C059h,AX=C05Bh
  2623. Index:    screen saver;Explosiv
  2624. --------V-2FC05B-----------------------------
  2625. INT 2F U - Explosiv 2.00 - SET ???
  2626.     AX = C05Bh
  2627.     BL = ???
  2628. SeeAlso: AX=C05Ah,AX=C05Ch
  2629. Index:    screen saver;Explosiv
  2630. --------V-2FC05C-----------------------------
  2631. INT 2F U - Explosiv 2.00 - SET ???
  2632.     AX = C05Ch
  2633.     BL = ???
  2634. SeeAlso: AX=C05Bh
  2635. Index:    screen saver;Explosiv
  2636. --------d-2FC64CBX5553-----------------------
  2637. INT 2F U - Smart Prompt - INSTALLATION CHECK
  2638.     AX = C64Ch
  2639.     BX = 5553h
  2640. Return: AX = 4CC6h if installed
  2641.     BX = 5355h if installed
  2642. Program: Smart Prompt (SMARTPMT) is a freeware TSR by Steve Gibson which forces
  2643.       an immediate flush of SmartDrive's (and compatible caches') buffers
  2644.       on returning to the DOS prompt
  2645. --------v-2FC900BP0000-----------------------
  2646. INT 2F U - ThunderByte??? - INSTALLATION CHECK
  2647.     AX = C900h
  2648.     BP = 0000h
  2649. Return: AL = FFh if installed
  2650.         BP >= 0014h
  2651. Note:    called by TBSCANX
  2652. SeeAlso: AX=C987h,AX=CA00h
  2653. --------v-2FC987-----------------------------
  2654. INT 2F U - ThunderByte??? - DISINFECT FILE???
  2655.     AX = C987h
  2656.     BX:DX -> filename
  2657.     BX:CX -> virus name
  2658. Return: AX = status
  2659.         0000h successful???
  2660. Note:    called by TBSCANX
  2661. SeeAlso: AX=CA00h
  2662. ----------2FC9FF-----------------------------
  2663. INT 2F C - StackMan - INSTALLATION BROADCAST
  2664.     AX = C9FFh
  2665.     BL = BCD version number
  2666.     CX = number of stacks
  2667.     DX = stack size in bytes
  2668. Program: StackMan is a freeware stack manager by Franz Veldman of ESaSS B.V.
  2669.       which functions as a replacement for the DOS STACK= command as well
  2670.       as permitting multiple TSRs to share a pool of stack space
  2671. Notes:    called by StackMan when it goes resident to inform interested TSRs that
  2672.       its API is available
  2673.     the installation check consists of testing for the string "STACKXXX" at
  2674.       offset 0Ah from the INT B4 handler
  2675. SeeAlso: INT B4"StackMan",INT B5"StackMan"
  2676. Index:    installation check;STACKMAN|broadcasts;STACKMAN installation
  2677. --------v-2FCA00BX5442-----------------------
  2678. INT 2F - TBSCANX - INSTALLATION CHECK
  2679.     AX = CA00h
  2680.     BX = 5442h ('TB')
  2681. Return: AL = 00h not installed
  2682.        = FFh installed
  2683.         BX = 7462h ('tb') if BX was 5442h on entry
  2684. Program: TBSCANX is a resident virus scanning module by Frans Veldman.
  2685. Note:    programs may perform virus checks on themselves, other program files,
  2686.       or their data files by invoking the TBSCANX API.
  2687. SeeAlso: AX=4653h,AX=C900h
  2688. --------v-2FCA01-----------------------------
  2689. INT 2F - TBSCANX - GET STATUS
  2690.     AX = CA01h
  2691. Return: AH = BCD version number (v2.2+)
  2692.        = CAh for versions before 2.2
  2693.     AL = state (00h = disabled, 01h = enabled)
  2694.     CX = number of signatures which will be searched
  2695. ---v2.0---
  2696.     BX = EMS handle, 0000h if not using EMS
  2697. ---v2.3+---
  2698.     BX = segment of swap area, 0000h if not swapped
  2699.     DX = EMS or XMS handle (XMS handle if BX=0000h), FFFFh if not using EMS
  2700. SeeAlso: AX=CA02h
  2701. --------v-2FCA02-----------------------------
  2702. INT 2F - TBSCANX - SET STATE
  2703.     AX = CA02h
  2704.     BL = new state (00h = disabled, 01h = enabled)
  2705. SeeAlso: AX=CA01h
  2706. --------v-2FCA03-----------------------------
  2707. INT 2F - TBSCANX - SCAN BUFFER
  2708.     AX = CA03h
  2709.     CX = size of buffer
  2710.     DS:DX -> buffer containing data to scan
  2711. Return: CF clear if no virus signatures found
  2712.         BX,ES destroyed
  2713.     CF set if signature found
  2714.         ES:BX -> ASCIZ virus name (v2.3+)
  2715.         DS:DX -> ASCIZ virus name (v2.0)
  2716.     AX,CX,DX destroyed (v2.3+)
  2717.     all other registers except CS:IP and SS:SP destroyed (v2.0)
  2718. SeeAlso: AX=CA04h
  2719. --------v-2FCA04-----------------------------
  2720. INT 2F - TBSCANX - SCAN FILE
  2721.     AX = CA04h
  2722.     DS:DX -> filename
  2723. Return: CF clear if no virus signatures found
  2724.         BX,ES destroyed
  2725.     CF set if signature found
  2726.         ES:BX -> ASCIZ virus name
  2727.     AX,CX,DX destroyed
  2728. Note:    this function requires at least 4K free memory
  2729. SeeAlso: AX=CA03h
  2730. --------U-2FCAFEBX0000-----------------------
  2731. INT 2F U - THELP v3.0 - INSTALLATION CHECK
  2732.     AX = CAFEh
  2733.     BX = 0000h
  2734. Return: BX = segment of resident code if installed
  2735.        = 0000h if not installed
  2736. SeeAlso: AX=5453h,INT 2D"AMIS"
  2737. --------F-2FCB00-----------------------------
  2738. INT 2F - Communicating Applications Specification - INSTALLATION CHECK
  2739.     AX = CB00h
  2740. Return: AL = status
  2741.         00h not installed, OK to install
  2742.         01h not installed, not OK to install
  2743.         FFh installed
  2744. Note:    AH = CBh is the default identifier, but may be reconfigured
  2745. SeeAlso: AH=2Ah,AX=8000h"FaxBIOS",AX=CB0Eh,AX=CBDCh
  2746. --------F-2FCB00BX4D53-----------------------
  2747. INT 2F - MTEZ XpressFax CASMGR - INSTALLATION CHECK
  2748.     AX = CB00h
  2749.     BX = 4D53h
  2750.     CX = 4949h
  2751. Return: AL = status
  2752.         00h not installed, OK to install
  2753.         01h not installed, not OK to install
  2754.         FFh installed
  2755.         BX = 6D73h
  2756.         CX = 6969h
  2757. Note:    this function is equivalent to the standard CASMGR installation check,
  2758.       but uses the additional magic values to identify which CAS is
  2759.       installed
  2760. SeeAlso: AH=2Ah,AX=8000h"FaxBIOS",AX=C000h"MTEZ",AX=CB0Eh,AX=CB16h
  2761. --------F-2FCB01-----------------------------
  2762. INT 2F - Communicating Applications Specification - SUBMIT A TASK
  2763.     AX = CB01h
  2764.     DS:DX -> ASCIZ name of task control file
  2765. Return: AX >= 0: event handle
  2766.        < 0: error code
  2767. Note:    files needed for an event must be kept until task is complete or error
  2768. SeeAlso: AX=CB0Bh,AX=CB15h
  2769.  
  2770. Error codes (AH = class, AL = subcode, value passed back is 2's complement):
  2771.   Class 00h    --- FAX warnings
  2772.     Subcode 00h    no error
  2773.         02h    bad scanline count
  2774.         03h    page sent with errors, could not retransmit
  2775.         04h    received data lost
  2776.         05h    invalid or missing logo file
  2777.         06h    filename does not match nonstandard format (NSF) header
  2778.         07h    file size does not match NSF header
  2779.   Class 01h    --- DOS warnings (data was sent)
  2780.     Subcode 01h    invalid function
  2781.         05h    access denied
  2782.         06h    invalid handle
  2783.         others    see INT 21/AH=59h
  2784.   Class 02h    --- fatal errors (data not sent)
  2785.     Subcode 00h    multiplex handler failed
  2786.         01h    unknown command
  2787.         02h    bad event handle
  2788.         03h    FIND NEXT attempted before FIND FIRST
  2789.         04h    no more events
  2790.         07h    invalid queue type
  2791.         08h    bad control file
  2792.         09h    communication board busy
  2793.         0Ah    invalid command parameter
  2794.         0Bh    can't uninstall resident code
  2795.         0Ch    file exists
  2796.         80h    unknown task type
  2797.         81h    bad phone number
  2798.         82h    bad .PCX file header
  2799.         83h    unexpected EOF
  2800.         84h    unexpected disconnect
  2801.         85h    too many dialing retries
  2802.         86h    no file specified for send
  2803.         87h    communication board timeout
  2804.         88h    received too many pages (>1023) of data
  2805.         89h    manual connect initiated too long ago
  2806.         8Ah    hardware command set error
  2807.         8Bh    bad NonStandard Format (NSF) header file
  2808.   Class 03h    --- fatal DOS errors
  2809.     Subcode 02h    file not found
  2810.         03h    path not found
  2811.         others    see INT 21/AH=59h
  2812.   Class 04h    --- FAX errors
  2813.     Subcode 01h    remote unit not Group 3 compatible
  2814.         02h    remote unit did not send capabilities
  2815.         03h    other FAX machine incompatible
  2816.         04h    other FAX incapable of file transfers
  2817.         05h    exceeded retrain or FAX resend limit
  2818.         06h    line noise or failure to agree on bit rate
  2819.         07h    remote disconnected after receiving data
  2820.         08h    no response from remote after sending data
  2821.         09h    remote's capabilities incompatible
  2822.         0Ah    no dial tone (v1.2+)
  2823.         0Bh    invalid response from remote unit after sending data
  2824.         0Dh    phone line dead or remote unit disconnected
  2825.         0Eh    timeout while waiting for secondary dial tone (v1.2+)
  2826.         11h    invalid command from remote after receiving data
  2827.         15h    tried to receive from incompatible hardware
  2828.         5Ch    received data overflowed input buffer
  2829.         5Dh    remote unexpectedly stopped sending data
  2830.         5Eh    other FAX machine jammed (no data sent)
  2831.         5Fh    remote took too long to send fax scan line
  2832.         63h    can't get through to remote unit
  2833.         64h    user canceled event
  2834.   Class 05h    --- application-specific (v1.2+)
  2835.   ---Intel FAXPOP.EXE
  2836.     Subcode 00h    tried to send while in graphics mode
  2837.         01h    insufficient disk space
  2838.         02h    internal buffer overflow
  2839.   Class 06h    --- CAS implementation-specific (v1.2+)
  2840. --------F-2FCB02-----------------------------
  2841. INT 2F - Communicating Applications Specification - ABORT CURRENT EVENT
  2842.     AX = CB02h
  2843. Return: AX >= 0: event handle of aborted event
  2844.        < 0: error code (see AX=CB01h)
  2845. Note:    termination could take up to 30 seconds
  2846. SeeAlso: AX=CB08h,AX=CB10h
  2847. --------F-2FCB05-----------------------------
  2848. INT 2F - Communicating Applications Specification - FIND FIRST QUEUE ENTRY
  2849.     AX = CB05h
  2850.     CX = status of events to find
  2851.         0000h successful completion
  2852.         0001h waiting to be processed
  2853.         0002h number has been dialed
  2854.         0003h connection established, sending
  2855.         0004h connection established, receiving
  2856.         0005h event aborted
  2857.         FFFFh find any event, regardless of status
  2858.         other negative values, match error code
  2859.     DH = direction
  2860.         00h chronological order, earliest to latest
  2861.         01h reverse chronological order, latest to earliest
  2862.     DL = queue to search
  2863.         00h task queue
  2864.         01h receive queue
  2865.         02h log queue
  2866. Return: AX = 0000h successful
  2867.         BX = event handle for found event
  2868.        < 0       error code (see AX=CB01h)
  2869. SeeAlso: AX=CB06h,AX=CB07h
  2870. --------F-2FCB06-----------------------------
  2871. INT 2F - Communicating Applications Specification - FIND NEXT QUEUE ENTRY
  2872.     AX = CB06h
  2873.     DL = queue to search
  2874.         00h task queue
  2875.         01h receive queue
  2876.         02h log queue
  2877. Return: AX = 0000h successful
  2878.         BX = event handle for found event
  2879.        < 0       error code (see AX=CB01h)
  2880. Note:    direction of search is same as preceding FIND FIRST call
  2881. SeeAlso: AX=CB05h
  2882. --------F-2FCB07-----------------------------
  2883. INT 2F - Communicating Applications Specification - OPEN FILE
  2884.     AX = CB07h
  2885.     BX = event handle from find (AL=05h,06h) or submit task (AL=01h)
  2886.     CX = receive file number (ignored for task queue and log queue)
  2887.         0000h  open receive control file
  2888.         N       open Nth received data file
  2889.     DL = queue
  2890.         00h task queue
  2891.         01h receive queue control file or received file, as given by CX
  2892.         02h log queue
  2893.         03h group file in task queue (v1.2+)
  2894.         04h group file in log queue (v1.2+)
  2895. Return: AX = 0000h successful
  2896.         BX = DOS file handle for requested file
  2897.        < 0       error code (see AX=CB01h)
  2898. Note:    the returned file handle has been opened in read-only mode and should
  2899.       be closed with INT 21/AH=3Eh after use
  2900. SeeAlso: AX=CB01h,AX=CB05h,AX=CB14h
  2901. --------F-2FCB08-----------------------------
  2902. INT 2F - Communicating Applications Specification - DELETE FILE
  2903.     AX = CB08h
  2904.     BX = event handle
  2905.     CX = receive file number
  2906.         0000h delete ALL received files and receive control file
  2907.         N      delete Nth received file
  2908.     DL = queue
  2909.         00h delete control file in task queue and corresponding group file
  2910.         if it exists
  2911.         01h delete file in receive queue, as given by CX
  2912.         02h delete control file in log queue (individual deletions not
  2913.         recommended, to maintain integrity of log) and corresponding
  2914.         group file if it exists
  2915. Return: AX = 0000h successful
  2916.        < 0       error code (see AX=CB01h)\
  2917. SeeAlso: AX=CB02h,AX=CB09h
  2918. --------F-2FCB09-----------------------------
  2919. INT 2F - Communicating Applications Specification - DELETE ALL FILES IN Q
  2920.     AX = CB09h
  2921.     DL = queue
  2922.         00h delete all control files in task queue, including all group
  2923.         files
  2924.         01h delete all files in receive queue
  2925.         02h delete all control files in log queue, including all group
  2926.         files
  2927. Return: AX = 0000h successful
  2928.        < 0       error code (see AX=CB01h)
  2929. SeeAlso: AX=CB08h
  2930. --------F-2FCB0A-----------------------------
  2931. INT 2F - Communicating Applications Specification - GET EVENT DATE
  2932.     AX = CB0Ah
  2933.     BX = event handle
  2934.     DL = queue
  2935.         00h task queue
  2936.         01h receive queue
  2937.         02h log queue
  2938. Return: AX = 0000h successful
  2939.         CX = year
  2940.         DH = month
  2941.         DL = day
  2942.        < 0       error code (see AX=CB01h)
  2943. SeeAlso: AX=CB0Bh,AX=CB0Ch
  2944. --------F-2FCB0B-----------------------------
  2945. INT 2F - Communicating Applications Specification - SET TASK DATE
  2946.     AX = CB0Bh
  2947.     BX = event handle (task event only)
  2948.     CX = year
  2949.     DH = month
  2950.     DL = day
  2951. Return: AX = 0000h successful
  2952.        < 0       error code (see AX=CB01h)
  2953. Note:    setting a task's date and time to before the current date and time
  2954.       causes it to execute immediately
  2955. SeeAlso: AX=CB01h,AX=CB0Ah,AX=CB0Dh
  2956. --------F-2FCB0C-----------------------------
  2957. INT 2F - Communicating Applications Specification - GET EVENT TIME
  2958.     AX = CB0Ch
  2959.     BX = event handle
  2960.     DL = queue
  2961.         00h task queue
  2962.         01h receive queue
  2963.         02h log queue
  2964. Return: AX = 0000h successful
  2965.         CH = hour
  2966.         CL = minute
  2967.         DH = second
  2968.         DL = 00h
  2969.        < 0       error code (see AX=CB01h)
  2970. SeeAlso: AX=CB0Ah,AX=CB0Dh
  2971. --------F-2FCB0D-----------------------------
  2972. INT 2F - Communicating Applications Specification - SET TASK TIME
  2973.     AX = CB0Dh
  2974.     BX = event handle (task events only)
  2975.     CH = hour
  2976.     CL = minute
  2977.     DH = second
  2978.     DL unused
  2979. Return: AX = 0000h successful
  2980.        < 0       error code (see AX=CB01h)
  2981. Note:    setting a task's date and time to before the current date and time
  2982.       causes it to execute immediately
  2983. SeeAlso: AX=CB0Bh,AX=CB0Ch,AX=CB10h
  2984. --------F-2FCB0E-----------------------------
  2985. INT 2F - Communicating Applications Specification - GET EXTERNAL DATA BLOCK
  2986.     AX = CB0Eh
  2987.     DS:DX -> 256-byte buffer
  2988. Return: AX = 0000h successful
  2989.         buffer filled
  2990.        < 0       error code (see AX=CB01h)
  2991.  
  2992. Format of external data block:
  2993. Offset    Size    Description
  2994.  00h    BYTE    CAS major version
  2995.  01h    BYTE    CAS minor version
  2996.  02h 68 BYTEs    ASCIZ path to directory containing CAS software, ends in slash
  2997.  46h 13 BYTEs    ASCIZ name of current phonebook (in CAS directory)
  2998.  53h 13 BYTEs    ASCIZ name of current logo file (in CAS directory)
  2999.  60h 32 BYTEs    ASCIZ default sender name
  3000.  80h 21 BYTEs    ASCIZ CCITT identification of fax device
  3001.  95h 107 BYTEs    reserved
  3002. --------F-2FCB0F-----------------------------
  3003. INT 2F - Communicating Applications Specification - GET/SET AUTORECEIVE
  3004.     AX = CB0Fh
  3005.     DL = subfunction
  3006.         00h get current autoreceive state
  3007.         01h set autoreceive state
  3008.         DH = number of rings before answer, 00h = never
  3009. Return: AX = 0000h autoreceive disabled
  3010.        = N       number of rings before answer
  3011.        < 0       error code (see AX=CB01h)
  3012. --------F-2FCB10-----------------------------
  3013. INT 2F - Communicating Applications Specification - GET CURRENT EVENT STATUS
  3014.     AX = CB10h
  3015.     DS:DX -> 512-byte buffer
  3016. Return: AX = 0000h successful
  3017.         BX = event handle of current event or negative error code if
  3018.             no current event
  3019.         buffer filled
  3020.        < 0       error code (see AX=CB01h)
  3021. SeeAlso: AX=CB02h,AX=CB0Dh
  3022.  
  3023. Format of status area:
  3024. Offset    Size    Description
  3025.  00h    BYTE    event type
  3026.         00h send
  3027.         01h receive
  3028.         02h polled send
  3029.         03h polled receive
  3030.         04h to 7Fh reserved
  3031.         FFh serious hardware error
  3032.  01h    BYTE    transfer type
  3033.         00h 200x200 dpi, FAX mode
  3034.         01h 100x200 dpi, FAX mode
  3035.         02h file transfer mode
  3036.         03h to 7Fh reserved
  3037.  02h    WORD    event status
  3038.         0000h completed successfully
  3039.         0001h waiting
  3040.         0002h number dialed
  3041.         0003h connected, sending
  3042.         0004h connected, receiving
  3043.         0005h aborted
  3044.         0006h to 007Fh reserved
  3045.         0080h to 7FFFh application-specific events
  3046.         8000h to FFFFh error codes
  3047.  04h    WORD    event time (packed DOS time format, see INT 21/AX=5700h)
  3048.  06h    WORD    event date (packed DOS date format, see INT 21/AX=5700h)
  3049.  08h    WORD    number of files to transfer, max 7FFFh
  3050.  0Ah    WORD    offset of file transfer record
  3051.  0Ch 47 BYTEs    ASCIZ phone number to call
  3052.  3Bh 64 BYTEs    ASCIZ application-specific tag string
  3053.  7Bh    BYTE    reserved (00h)
  3054.  7Ch    BYTE    connect time, seconds
  3055.  7Dh    BYTE    connect time, minutes
  3056.  7Eh    BYTE    connect time, hours
  3057.  7Fh    DWORD    total number of pages in all files
  3058.  83h    DWORD    pages already transmitted
  3059.  87h    WORD    number of files already transmitted
  3060.  89h    BYTE    cover page flag
  3061.         00h don't transmit cover page
  3062.         01h transmit cover page
  3063.         02h to 7Fh reserved
  3064.  8Ah    WORD    total number of transmission errors
  3065.  8Ch 78 BYTEs    reserved (zeros)
  3066.  DAh 21 BYTEs    ASCIZ remote FAX's CCITT identification
  3067.  EFH 32 BYTEs    ASCIZ destination name
  3068. 10Fh 32 BYTEs    ASCIZ sender name
  3069. 12Fh 80 BYTEs    filename of PCX logo file (max 1780x800 pixels)
  3070. 17Fh 128 BYTEs    file transfer record for current event (see below)
  3071.  
  3072. Format of file transfer record:
  3073. Offset    Size    Description
  3074.  00h    BYTE    file type (ignored unless FAX)
  3075.         00h ASCII
  3076.         01h PCX
  3077.         02h DCX
  3078.         03h to 7Fh reserved
  3079.  01h    BYTE    text size for ASCII FAX file
  3080.         00h = 80 columns by 66 lines (11 inches)
  3081.         01h = 132 columns by 88 lines (11 inches)
  3082.         02h to 7Fh reserved
  3083.  02h    BYTE    status of file
  3084.         00h untouched
  3085.         01h opened
  3086.         02h moved
  3087.         03h deleted
  3088.         04h not yet received
  3089.         05h to 7Fh reserved
  3090.  03h    DWORD    bytes already transmitted
  3091.  07h    DWORD    file size in bytes
  3092.  0Bh    WORD    pages alread transmitted
  3093.  0Dh    WORD    number of pages in file
  3094.  0Fh 80 BYTEs    ASCIZ filename
  3095.  5Fh    BYTE    1/8 inch page length
  3096.         if page length below set to 01h through 7Fh, this value
  3097.         specifies additional 1/8 inch increments to page length
  3098.  60h    BYTE    page length
  3099.         00h = 11 inches
  3100.         01h to 7Fh = page length is this number of inches plus value of
  3101.             1/8 inch field above
  3102.         80h to FEh reserved
  3103.         FFh = ASCII pages ending with formfeed
  3104.  61h 31 BYTEs    reserved (zeros)
  3105. --------F-2FCB11-----------------------------
  3106. INT 2F - Communicating Applications Specification - GET QUEUE STATUS
  3107.     AX = CB11h
  3108.     DL = queue to get status of
  3109.         00h task queue
  3110.         01h receive queue
  3111.         02h log queue
  3112.         03h send events (v1.2+)
  3113.         04h receive events (v1.2+)
  3114. Return: AX >= 0     total number of changes made to queue, modulo 32768
  3115.         BX = number of control files currently in queue
  3116.         CX = number of received files (zero for task and log queues)
  3117.     AX < 0    error code (see AX=CB01h)
  3118. SeeAlso: AX=CB12h
  3119. --------F-2FCB11DL03-------------------------
  3120. INT 2F - Communicating Applications Spec v1.2+ - GET NUMBER OF SEND EVENTS
  3121.     AX = CB11h
  3122.     DL = 03h
  3123. Return: AX = number of successful sends since resident manager started
  3124.     BX = number of unsuccessful sends, including warnings
  3125. SeeAlso: AX=CB11h/DL=04h
  3126. --------F-2FCB11DL04-------------------------
  3127. INT 2F - Communicating Applications Spec v1.2+ - GET NUMBER OF RECEIVE EVENTS
  3128.     AX = CB11h
  3129.     DL = 04h
  3130. Return: AX = number of received file events since resident manager started
  3131.     BX = number of received FAX events
  3132. SeeAlso: AX=CB11h/DL=03h
  3133. --------F-2FCB12-----------------------------
  3134. INT 2F - Communicating Applications Specification - GET HARDWARE STATUS
  3135.     AX = CB12h
  3136.     DS:DX -> 128-byte status buffer (see below)
  3137. Return: AX = 0000h successful
  3138.         buffer filled with hardware-dependent status information
  3139.        < 0       error code (see AX=CB01h)
  3140. SeeAlso: AX=CB10h,AX=CB11h
  3141.  
  3142. Format of status buffer for Intel Connection CoProcessor:
  3143. Offset    Size    Description
  3144.  00h    BYTE    Connection CoProcessor connection status flags (see below)
  3145.  01h    BYTE    number of kilobytes of free buffer space
  3146.  02h    BYTE    page buffer status
  3147.         bit 7: Connection CoProcessor has documents to send
  3148.         bits 6-0: number of pages in buffer
  3149.  03h    BYTE    number of retries left for dialing number
  3150.  04h    BYTE    page number to retransmit
  3151.  05h    BYTE    communications status (see below)
  3152.  06h    BYTE    baud rate
  3153.         bit 7: reserved
  3154.         bits 6-4: baud rate
  3155.             000 = 300 baud    (V.21 SDLC or HDLC mode)
  3156.             100 = 2400 baud (V.27 ter)
  3157.             101 = 4800 baud (V.27 ter)
  3158.             110 = 7200 baud (V.29)
  3159.             111 = 9600 baud (V.29)
  3160.         bits 3-0: reserved, should be 0110
  3161.  07h  3 BYTEs    reserved
  3162.  0Ah    BYTE    Connection CoProcessor hardware status (see below)
  3163.  0Bh    BYTE    Connection CoProcessor switch states (see below)
  3164.  0Ch    BYTE    communications flags (see below)
  3165.  0Dh    BYTE    reserved
  3166.  0Eh    WORD    error count (only valid while busy, reset when idle)
  3167.  10h    DWORD    size of nonstandard format (NSF) file in bytes
  3168.  14h    BYTE    'A' if Connection CoProcessor board present
  3169.  15h  9 BYTEs    reserved
  3170.  1Eh 21 BYTEs    ASCIZ CCITT identification
  3171.  33h 77 BYTEs    reserved
  3172. Note:    the Intel Connection CoProcessor and SatisFAXtion may be distinguished
  3173.       by examining the byte at offset 14h
  3174.  
  3175. Format of status buffer for Intel SatisFAXtion board:
  3176. Offset    Size    Description
  3177.  00h    BYTE    SatisFAXtion connection status flags (see below)
  3178.  01h    BYTE    SatisFAXtion board state (see below)
  3179.  02h    BYTE    number of KB free in buffer
  3180.  03h    BYTE    number of pages or files in buffer
  3181.  04h    BYTE    number of redials remaining on current number
  3182.  05h    BYTE    FAX page number to retransmit
  3183.  06h    BYTE    current page/file in block transfer
  3184.  07h    BYTE    number of rings received (only if auto-answer enabled)
  3185.  08h    WORD    error count
  3186.  0Ah    DWORD    length of file being transferred
  3187.  0Eh  6 BYTEs    reserved
  3188.  14h    BYTE    'B' if SatisFAXtion board present
  3189.  15h 13 BYTEs    ASCIZ transfer agent name
  3190.  22h  5 BYTEs    ASCIZ transfer agent version number
  3191.  27h 13 BYTEs    ASCIZ resident loader name
  3192.  34h  5 BYTEs    ASCIZ resident loader version number
  3193.  39h 21 BYTEs    ASCIZ remote CSID
  3194.  4Eh 13 BYTEs    ASCIZ resident manager name
  3195.  5Bh  5 BYTEs    ASCIZ resident manager version number
  3196.  60h 32 BYTEs    reserved
  3197. Note:    the Intel Connection CoProcessor and SatisFAXtion may be distinguished
  3198.       by examining the byte at offset 14h
  3199.  
  3200. Bitfields for Connection CoProcessor connection status flags:
  3201.  bit 7    hardware busy sending or receiving
  3202.  bit 6    last page of data
  3203.  bit 5    no data on current page
  3204.  bit 4    retransmit request for current page being transmitted
  3205.  bit 3    NSF (nonstandard file) mode active
  3206.  bits 2-0 reserved
  3207.  
  3208. Bitfields for communications status:
  3209.  bit 7    originating call
  3210.  bit 6    FAX message to be sent
  3211.  bit 5    on line
  3212.  bit 4    ring detected and receive enabled
  3213.  bit 3    buffer dumped on receive
  3214.  bits 2-0    hardware sequence state
  3215.         000 idle
  3216.         001 dial
  3217.         010 answer
  3218.         011 transmit
  3219.         100 receive
  3220.         101 pre-message
  3221.         110 post-message
  3222.         111 disconnect
  3223.  
  3224. Bitfields for Connection CoProcessor hardware status:
  3225.  bit 7    modem option installed
  3226.  bit 6    Connection CoProcessor has control of DAA (not latched)
  3227.  bit 5    on line (not latched)
  3228.  bit 4    ring detected (not latched)
  3229.  bit 3    data in command buffer (not latched)
  3230.  bit 2    set if using DMA channel 1, clear if using DMA channel 3
  3231.  bit 1    line length compensation bit 1 set (not latched)
  3232.  bit 0    line length compensation bit 0 set (not latched)
  3233.  
  3234. Bitfields for Connection CoProcessor switch states:
  3235.  bit 7: reserved
  3236.  bit 6: unused
  3237.  bit 5: spare switch open
  3238.  bit 4: FAX ADR1 switch open
  3239.  bit 3: FAX ADR0 switch open
  3240.  bit 2: alternate interrupt switch open
  3241.  bit 1: COM SEL 1 switch open
  3242.  bit 0: COM SEL 0 switch open
  3243. Note: valid combinations of bits 0-2 are
  3244.     000  COM2 IRQ3 IObase 2F8h
  3245.     001  COM1 IRQ4 IObase 3F8h
  3246.     010  COM4 IRQ3 IObase 2E8h
  3247.     011  COM3 IRQ4 IObase 3E8h
  3248.     110  COM4 IRQ2 IObase 2E8h
  3249.     111  COM3 IRQ5 IObase 3E8h
  3250.  
  3251. Bitfields for communications flags:
  3252.  bit 7    reserved
  3253.  bit 6    auxiliary relay forced ON
  3254.  bit 5    modem select relay forced ON
  3255.  bit 4    offhook relay forced ON
  3256.  bit 3    9600 bps enabled
  3257.  bit 2    7200 bps enabled
  3258.  bit 1    4800 bps enabled
  3259.  bit 0    2400 bps enabled
  3260.  
  3261. Bitfields for SatisFAXtion connection status flags:
  3262.  bit 7    busy in T.30 CCITT fax protocol
  3263.  bit 6    data on current page/file (only used for block xfers)
  3264.  bit 5    retransmission of last page requested
  3265.  bit 4    in file transfer mode
  3266.  bit 3    data in buffer
  3267.  bit 2    data buffer dumped on receive
  3268.  bit 1    200x100 dpi resolution instead of 200x200 dpi
  3269.  bit 0    data modem in use, FAX image modem not available
  3270.  
  3271. Bitfields for SatisFAXtion board state:
  3272.  bit 7    reserved
  3273.  bit 6    handset jack active, data and FAX modems not available
  3274.  bits 5-3  current bit rate
  3275.         000     300 bps (V.21 HDLC)
  3276.         100 2400 bps (V.27 ter)
  3277.         101 4800 bps (V.27 ter)
  3278.         110 7200 bps (V.29)
  3279.         111 9600 bps (V.29)
  3280.  bits 2-0  T.30 CCITT protocol state
  3281.         000 idle
  3282.         001 dialing
  3283.         010 answering
  3284.         011 transmitting
  3285.         100 receiving
  3286.         101 pre-message
  3287.         110 post-message
  3288.         111 disconnect
  3289. --------F-2FCB13DL00-------------------------
  3290. INT 2F - Communicating Applications Specification - GET DIAGNOSTICS RESULTS
  3291.     AX = CB13h
  3292.     DL = 00h
  3293. Return: AX = 0040h in progress
  3294.        >= 0       passed
  3295.        < 0       hardware-dependent failure code (see below)
  3296. SeeAlso: AX=CB13h/DL=01h
  3297.  
  3298. Intel Connection CoProcessor failure codes:
  3299.  bit 3    9600 bps FAX modem module failed
  3300.  bit 2    SDLC chip failed
  3301.  bit 1    RAM failed
  3302.  bit 0    ROM checksum failed
  3303.  
  3304. Intel SatisFAXtion failure codes:
  3305.  bit 1    2400 bps data modem failed
  3306.  bit 0    9600 bps FAX modem failed
  3307. --------F-2FCB13DL01-------------------------
  3308. INT 2F - Communicating Applications Specification - START DIAGNOSTICS
  3309.     AX = CB13h
  3310.     DL = 01h
  3311. Return: AX = 0000h successfully started
  3312.        < 0       error code (see AX=CB01h)
  3313. SeeAlso: AX=CB13h/DL=00h
  3314. --------F-2FCB14-----------------------------
  3315. INT 2F - Communicating Applications Specification - MOVE RECEIVED FILE
  3316.     AX = CB14h
  3317.     BX = event handle
  3318.     CX = receive file number
  3319.          0001h first received file
  3320.          N       Nth received file
  3321.     DS:DX -> ASCIZ string specifying new name for file (must not exist)
  3322. Return: AX = 0000h successful
  3323.        < 0       error code (see AX=CB01h)
  3324. --------F-2FCB15-----------------------------
  3325. INT 2F - Communicating Applications Specification - SUBMIT FILE TO SEND
  3326.     AX = CB15h
  3327.     DS:DX -> variable-length data area (see below)
  3328. Return: AX >= 0 event handle
  3329.        < 0    error code (see AX=CB01h)
  3330. SeeAlso: AX=CB01h
  3331.  
  3332. Format of data area:
  3333. Offset    Size    Description
  3334.  00h    BYTE    transfer type
  3335.         00h = 200x200 dpi, fax mode
  3336.         01h = 100x200 dpi, fax mode
  3337.         02h = file transfer mode
  3338.         03h to 7Fh reserved
  3339.  01h    BYTE    text size
  3340.         00h = 80 columns
  3341.         01h = 132 columns
  3342.         02h to 7Fh reserved
  3343.  02h    WORD    time to send (DOS packed time format, see INT 21/AX=5700h)
  3344.  04h    WORD    date to send (DOS packed date format, see INT 21/AX=5700h)
  3345.  06h 32 BYTEs    ASCIZ destination name
  3346.  26h 80 BYTEs    ASCIZ name of file to send
  3347.  76h 47 BYTEs    ASCIZ phone number to dial
  3348.  A5h 64 BYTEs    ASCIZ application-specific tag string
  3349.  E5h    BYTE    reserved (00h)
  3350.  E6h    BYTE    cover page
  3351.         00h don't send cover page
  3352.         01h send cover page
  3353.         02h to 7Fh reserved
  3354.  E7h 23 BYTEs    reserved (zeros)
  3355.  FEh variable    ASCIZ string containing text of cover page (if cover page flag
  3356.         set to 01h)
  3357. --------F-2FCB16BX1234-----------------------
  3358. INT 2F - Communicating Applications Spec v1.2+ - UNLOAD RESIDENT MANAGER
  3359.     AX = CB16h
  3360.     BX = 1234h
  3361.     CX = 5678h
  3362.     DX = 9ABCh
  3363. Return: AX = 0000h successful
  3364.        < 0       error code
  3365. Note:    the MTEZ XpressFax CASMGR ignores the values in BX,CX, and DX
  3366. SeeAlso: AX=C000h"MTEZ",AX=CB00h
  3367. Index:    uninstall;CAS Manager
  3368. --------F-2FCB17-----------------------------
  3369. INT 2F - Communicating Applications Spec v1.2+ - SET COVER PAGE STATUS
  3370.     AX = CB17h
  3371.     BX = event handle
  3372.     CL = cover page status
  3373.         00h not read
  3374.         01h read by user
  3375. Return: AX = 0000h successful
  3376.        < 0       error code
  3377. --------F-2FCB80-----------------------------
  3378. INT 2F - Intel SatisFAXtion CASMGR - ???
  3379.     AX = CB80h
  3380.     ???
  3381. Return: ???
  3382. --------F-2FCB81-----------------------------
  3383. INT 2F - Intel SatisFAXtion CASMGR - ???
  3384.     AX = CB81h
  3385.     ???
  3386. Return: ???
  3387. --------F-2FCB82-----------------------------
  3388. INT 2F - Intel SatisFAXtion CASMGR - ???
  3389.     AX = CB82h
  3390.     ???
  3391. Return: ???
  3392. --------F-2FCBDCBL56-------------------------
  3393. INT 2F - Comwave Microfax Specification - GET STATUS ARRAY
  3394.     AX = CBDCh
  3395.     BL = 56h
  3396.     BH = line number (starts with 1)
  3397.     CX:DX -> 32-byte status buffer or 80 character string
  3398. Return: AX = number of cards installed, or FFFFh on error
  3399. Program: Comwave manufacturers the Microfax line of fax cards which are a high-
  3400.       performance multi-card FAX solution for OEMs.
  3401. Note:    defaults to AH=CBh but can be changed
  3402. SeeAlso: AX=CBDDh,AX=DA00h
  3403. --------F-2FCBDDBL56-------------------------
  3404. INT 2F - Comwave Microfax Specification - COMMAND SUBMISSION
  3405.     AX = CBDDh
  3406.     BL = 56h
  3407.     BH = ?
  3408.     CX:DX -> command to execute
  3409. Return: AX = status
  3410.         0000h success
  3411.         FFFFh on error
  3412. SeeAlso: AH=2Ah,AX=CBDCh,AX=80FBh
  3413. --------c-2FCC--SI5453-----------------------
  3414. INT 2F U - PC-Kwik Programs - API
  3415.     AH = CCh
  3416.     SI = 5453h or 7473h
  3417.     AL = function number (at least 00h,01h,04h,05h,07h,80h)
  3418.     DL = program identifier
  3419.         00h all installed PowerPak programs
  3420.         01h SUPERPCK/SUPER/QCACHE v4.00+ (disk cache)
  3421.         02h PCKSPL (print spooler)
  3422.         04h PCKSCRN (screen accelerator)
  3423.         05h PCKKEY (keyboard enhancer)
  3424.         06h PCKRAMD (RAM disk)
  3425.         08h PCKWIK.SYS
  3426.         10h PCKCDROM (CD-ROM support for SUPERPCK)
  3427. Return: SI = 7473h
  3428.     other registers vary by function
  3429. Note:    Qualitas Qcache v4.00 is an OEM version of Super PC-Kwik v4.00, and
  3430.       thus supports this call
  3431. SeeAlso: INT 21/AH=2Bh/CX=4358h
  3432. ----------2FCD00-----------------------------
  3433. INT 2F - Intel Image Processing Interface - INSTALLATION CHECK
  3434.     AX = CD00h
  3435. Return: AL = 00h not installed, OK to install
  3436.          01h not installed, not OK to install
  3437.          FFh installed
  3438. SeeAlso: AX=CD02h"Image"
  3439. --------P-2FCD00-----------------------------
  3440. INT 2F - LaserPort Interface - INSTALLATION CHECK
  3441.     AX = CD00h
  3442. Return: AL = status
  3443.         FFh installed
  3444. SeeAlso: AX=CD0Fh"LaserPort"
  3445. --------U-2FCD00-----------------------------
  3446. INT 2F - SWELL.EXE - INSTALLATION CHECK
  3447.     AX = CD00h
  3448. Return: AX = 00FFh installed
  3449.         BH = major version
  3450.         BL = minor version
  3451. Program: SWELL.EXE is a TSR which swaps programs to disk when they EXEC a child
  3452.       process with INT 21/AH=4Bh
  3453. ----------2FCD01-----------------------------
  3454. INT 2F - Intel Image Processing Interface - SET DEVICE NAME
  3455.     AX = CD01h
  3456.     CX:BX -> ASCIZ character device name ("LPTn", "COMn", "PRN")
  3457. Return: AL = 00h successful
  3458.         CX:BX -> internal character device name
  3459.        = 80h error
  3460. --------U-2FCD01-----------------------------
  3461. INT 2F - SWELL.EXE - SUSPEND ONCE
  3462.     AX = CD01h
  3463. Return: AX = 0000h
  3464. SeeAlso: AX=CD02h"SWELL"
  3465. ----------2FCD02-----------------------------
  3466. INT 2F - Intel Image Processing Interface - GET VERSION NUMBER
  3467.     AX = CD02h
  3468. Return: AL = 00h/01h successful
  3469.         BH = major version number (BCD)
  3470.         BL = minor version number (BCD)
  3471.        = 80h error
  3472. Note:    if return AL = 01h, the IPI supports network redirection
  3473. SeeAlso: AX=CD00h"Image"
  3474. --------U-2FCD02-----------------------------
  3475. INT 2F - SWELL.EXE - SUSPEND
  3476.     AX = CD02h
  3477. Return: AX = 0000h
  3478. SeeAlso: AX=CD03h"SWELL"
  3479. ----------2FCD03-----------------------------
  3480. INT 2F - Intel Image Processing Interface - SELECT SCAN LINE
  3481.     AX = CD03h
  3482.     BX = scan line
  3483.     CX = requested density in dots per inch (300, 600, or 1200)
  3484. Return: AL = 00h succesful
  3485.         CX = density at which scan line was mapped
  3486.         ES:DI -> start of scan line
  3487.     AL = 80h unsuccessful
  3488.        = 81h scan line out of range
  3489.        = 82h unsupported scan line density
  3490.        = 83h out of memory
  3491. SeeAlso: AX=CD04h"Image"
  3492. --------U-2FCD03-----------------------------
  3493. INT 2F - SWELL.EXE - ACTIVATE
  3494.     AX = CD03h
  3495. Return: AX = 0000h
  3496. SeeAlso: AX=CD02h"SWELL"
  3497. ----------2FCD04-----------------------------
  3498. INT 2F - Intel Image Processing Interface - MOVE BITMAP TO SCANLINE
  3499.     AX = CD04h
  3500.     CX:BX -> structure (see below)
  3501. Return: AL = 00h successful
  3502.        = 80h unsuccessful
  3503.        = 81h scan line out of range
  3504.        = 82h unsupported scan line density
  3505.        = 83h out of memory
  3506.        = 84h unrecognized source
  3507.        = 85h initialization error
  3508. SeeAlso: AX=CD03h"Image"
  3509.  
  3510. Format of structure:
  3511. Offset    Size    Description
  3512.  00h    WORD    image source (0 = conventional memory, 1 = expanded memory)
  3513.  02h    DWORD    pointer to image data
  3514.  06h    WORD    scan line on which to place
  3515.  08h    WORD    bit offset from start of scan line at which to place
  3516.  0Ah    WORD    density of bitmap data (300, 600, or 1200 dpi)
  3517.  0Ch    WORD    width in bits of data
  3518.  0Eh    WORD    source logical page number
  3519.  10h    WORD    source handle (only if source in expanded memory)
  3520.  12h    WORD    source offset (only if source in expanded memory)
  3521. --------U-2FCD04-----------------------------
  3522. INT 2F - SWELL.EXE - TURN OFF VERBOSE MODE
  3523.     AX = CD04h
  3524. Return: AX = 0000h
  3525. SeeAlso: AX=CD05h"SWELL"
  3526. ----------2FCD05-----------------------------
  3527. INT 2F - Intel Image Processing Interface - PRINT PAGE
  3528.     AX = CD05h
  3529. Return: AL = 00h successful
  3530.        = 80h unsuccessful
  3531. Note:    page image is retained, so multiple calls will print multiple copies of
  3532.       the page
  3533. SeeAlso: AX=CD06h"Image"
  3534. --------U-2FCD05-----------------------------
  3535. INT 2F - SWELL.EXE - TURN ON VERBOSE MODE
  3536.     AX = CD05h
  3537. Return: AX = 0000h
  3538. SeeAlso: AX=CD04h"SWELL"
  3539. ----------2FCD06-----------------------------
  3540. INT 2F - Intel Image Processing Interface - CLEAR PAGE
  3541.     AX = CD06h
  3542. Return: AL = 00h successful
  3543.        = 80h unsuccessful
  3544. Note:    palette is reset to default
  3545. SeeAlso: AX=CD09h"Image"
  3546. --------U-2FCD06-----------------------------
  3547. INT 2F - SWELL.EXE - UNINSTALL
  3548.     AX = CD06h
  3549. Return: AX = 0000h uninstalled
  3550.        = 8002h programs still swapped, not uninstalled
  3551. ----------2FCD07-----------------------------
  3552. INT 2F - Intel Image Processing Interface - reserved
  3553.     AX = CD07h
  3554. --------U-2FCD07-----------------------------
  3555. INT 2F - SWELL.EXE - GET INFO
  3556.     AX = CD07h
  3557.     ES:BX -> 32-byte buffer for info
  3558. Return: AX = 0000h successful
  3559.         ES:BX buffer filled
  3560.        = 8001h buffer wrong size
  3561.  
  3562. Format of info buffer:
  3563. Offset    Size    Description
  3564.  00h    WORD    20h  (total size of buffer)
  3565.  02h    BYTE    suspend-once mode active if nonzero
  3566.  03h    BYTE    00h active, 01h suspended
  3567.  04h    BYTE    00h quiet, 01h verbose
  3568.  05h    BYTE    "Borland support" (allowing INT 21/AX=4B01h) on if nonzero
  3569.  06h 26 BYTEs    unused???
  3570. ----------2FCD08-----------------------------
  3571. INT 2F - Intel Image Processing Interface - SCREEN IMAGE
  3572.     AX = CD08h
  3573.     CX:BX -> structure (see below)
  3574. Return: AL = 00h successful
  3575.        = 80h unsuccessful
  3576.        = 81h scan line out of range
  3577.        = 82h unsupported scan line density
  3578.        = 83h out of memory
  3579.        = 84h unrecognized source
  3580.        = 85h initialization error
  3581. SeeAlso: AX=CD05h"Image",AX=CD09h"Image"
  3582.  
  3583. Format of structure:
  3584. Offset    Size    Description
  3585.  00h    WORD    image source (0 = conventional memory, 1 = expanded memory)
  3586.  02h    DWORD    pointer to image data
  3587.  06h    WORD    horizontal position on paper of left edge (in 1200 dpi units)
  3588.  08h    WORD    vertical position on paper of top edge (in 1200 dpi units)
  3589.  0Ah    WORD    left cropping (currently must be zero)
  3590.  0Ch    WORD    top cropping (currently must be zero)
  3591.  0Eh    WORD    width (currently must be 8000h)
  3592.  10h    WORD    height (currently must be 8000h)
  3593.  12h    WORD    horizontal size of image in 1200 dpi units
  3594.  14h    WORD    vertical size of image in 1200 dpi units
  3595.  16h    WORD    aspect ratio (currently reserved)
  3596.  18h    WORD    initialization flag (if 01h, initialization is performed)
  3597.  1Ah    WORD    pixels per line of source data
  3598.  1Ch    WORD    number of scan lines in source data
  3599.  1Eh    WORD    number of scan lines in packet
  3600.  20h    WORD    bits per pixel (1,2,4,6, or 8)
  3601.  22h    WORD    pixels per byte (1,2,4, or 8)
  3602.  24h    WORD    compression type (currently only 00h [uncompressed] supported)
  3603.  26h    WORD    source page number (if in expanded memory)
  3604.  28h    WORD    source handle (if in expanded memory)
  3605.  2Ah    WORD    source offset (if in expanded memory)
  3606. --------U-2FCD08-----------------------------
  3607. INT 2F - SWELL.EXE - UNUSED
  3608.     AX = CD08h
  3609. Return: AX = FFFFh (error)
  3610. ----------2FCD09-----------------------------
  3611. INT 2F - Intel Image Processing Interface - LOAD SCREEN
  3612.     AX = CD09h
  3613.     CX:BX -> structure (see below)
  3614. Return: AL = 00h successful
  3615.        = 80h unsuccessful
  3616. SeeAlso: AX=CD06h"Image Processing",AX=CD0Ah"Image Processing"
  3617.  
  3618. Format of structure:
  3619. Offset    Size    Description
  3620.  00h    BYTE    style
  3621.         44h ('D') diamond style
  3622.         4Ch ('L') line style
  3623.  01h    BYTE    reserved (00h)
  3624.  02h    WORD    frequency in lines per inch [sic]
  3625.         currently, coerced to nearest of 50, 60, 68, 70, 75, 85, or 100
  3626.  04h    WORD    screen angle in degrees (-360 to 360)
  3627.         currently coerced to nearest of -45, 0, 45, or 90
  3628. --------U-2FCD09-----------------------------
  3629. INT 2F - SWELL.EXE - TURN OFF "BORLAND SUPPORT"
  3630.     AX = CD09h
  3631. Return: AX = 0000h
  3632. SeeAlso: AX=CD0Ah"SWELL"
  3633. ----------2FCD0A-----------------------------
  3634. INT 2F - Intel Image Processing Interface - LOAD PALETTE
  3635.     AX = CD0Ah
  3636.     CX:BX -> palette structure (see below)
  3637. Return: AL = 00h successful
  3638.        = 80h unsuccessful
  3639. SeeAlso: AX=CD09h"Image Processing"
  3640.  
  3641. Format of palette structure:
  3642. Offset    Size    Description
  3643.  00h    BYTE    bits per pixel for which palette is to be used (1,2,4,6, or 8)
  3644.  01h    2**N    palette translation values, one per possible pixel value
  3645. --------U-2FCD0A-----------------------------
  3646. INT 2F - SWELL.EXE - TURN ON "BORLAND SUPPORT"
  3647.     AX = CD0Ah
  3648. Return: AX = 0000h
  3649. SeeAlso: AX=CD09h"SWELL"
  3650. --------P-2FCD0F-----------------------------
  3651. INT 2F - LaserPort Interface - EXECUTE FUNCTION
  3652.     AX = CD0Fh
  3653.     BL = function
  3654.         01h enable
  3655.         02h disable
  3656.         03h ???
  3657. Return: AL = status
  3658.         00h success
  3659. SeeAlso: AX=CD00h"LaserPort"
  3660. --------K-2FCF00-----------------------------
  3661. INT 2F - TEMPLEXX 1.0 - INSTALLATION CHECK
  3662.     AX = CF00h
  3663. Return: AL = FFh if installed
  3664. Program: TEMPLEXX is a popup keyboard template by Henson Scientific, Inc.
  3665. Note:    values in AL other than 00h cause an immediate return without modifying
  3666.       any registers
  3667. --------G-2FD000-----------------------------
  3668. INT 2F - MDEBUG display driver - GET DRIVER STATUS
  3669.     AX = D000h
  3670. Return: CF set on error
  3671.         all other registers must be unchanged)
  3672.     CF clear if successful
  3673.         AL = FFh
  3674.         AH = driver semaphor
  3675.         00h driver is not active
  3676.         01h driver is active
  3677.         BX = CS of the driver
  3678.         CX = driver version (CH = major, CL = minor, must be >= 013Ch)
  3679.         DL = buffer semaphor
  3680.         00h driver is not pending
  3681.         01h driver is pending between functions 02h and 03h
  3682.         DH = show semaphor
  3683.         00h driver is not pending
  3684.         01h driver is pending between functions 04h and 05h
  3685. Program: MDEBUG is a shareware memory-resident debugging tool by Bernd
  3686.       Schemmer, including a memory monitor, an interpreter and a
  3687.       disassembler
  3688. Notes:    MDEBUG can use any two consecutive multiplex numbers between C0h and
  3689.       FFh; the default is D0h for the display driver and D1h for the
  3690.       command driver (see INT 60/AH=00h"MDEBUG" for the actual multiplex
  3691.       numbers used)
  3692.     this function MUST be reentrant, as MDEBUG calls it after every popup
  3693.       before any other actions.  The handler should not change any
  3694.       registers if the display is in an unsupported mode or in a mode
  3695.       MDEBUG supports itself, e.g. a normal text mode with at least 80x25
  3696.       characters (i.e. 80x43 or 132x44 (v1.60+)). In this case MDEBUG will
  3697.       not call any of the other functions for this popup session.
  3698.     MDEBUG will not call the other functions if the returned version is
  3699.       less than the actual version of MDEBUG.
  3700.     if the driver is reentrant, DL and DH should be 00h
  3701. SeeAlso: AX=D001h,AX=D002h,AX=D003h,AX=D004h,AX=D005h
  3702. --------M-2FD000-----------------------------
  3703. INT 2F - ZWmous - INSTALLATION CHECK
  3704.     AX = D000h
  3705. Return: AX = 5A57h ("ZW") if installed
  3706.         BX = segment of resident code
  3707. Program: ZWmous is a shareware TSR by Zen Wu which permits the use of a mouse
  3708.       with many non-mouse applications by entering the letter under the
  3709.       mouse cursor on button presses
  3710. SeeAlso: INT 33/AX=0003h
  3711. --------N-2FD000-----------------------------
  3712. INT 2F - Lotus CD/Networker - INSTALLATION CHECK
  3713.     AX = D000h
  3714. Return: AL = FFh if CD/Networker TSR is loaded
  3715.     BX = 4D44h ("MD") signature
  3716.     CX = Windows mode word (from INT 2F/AX=1600h) at time of TSR load
  3717.     DX = bitmap identifying all loaded CD/Networker TSRs.
  3718. Notes:    INT 2F/AH=D0h is used by CD/Networker to communicate between a
  3719.       resident redirector TSR and a transient program that controls the
  3720.       TSR's CD-ROM drive emulation (volume attachments, caching, etc).
  3721.     At present there is only one CD/Networker TSR; the bitmap always = 4.
  3722. SeeAlso: AX=D002h"Lotus",INT 2F/AX=1500h"CD-ROM"
  3723. --------G-2FD001-----------------------------
  3724. INT 2F - MDEBUG display driver - INITIALIZE DRIVER
  3725.     AX = D001h
  3726. Return: CF set on error
  3727.     AL = driver semaphor
  3728.     AH = buffer semaphor
  3729. Notes:    MDEBUG calls this function after every succesful call of the function
  3730.       00h. The function should reset all internal data and the status of
  3731.       the driver. If this function returns an error, MDEBUG will not call
  3732.       the other functions in this popup session.
  3733.     MDEBUG can use any two consecutive multiplex numbers between C0h and
  3734.       FFh; the default is D0h for the display driver and D1h for the
  3735.       command driver
  3736. SeeAlso: AX=D000h
  3737. --------G-2FD002-----------------------------
  3738. INT 2F - MDEBUG display driver - SAVE GRAPHIC DATA
  3739.     AX = D002h
  3740. Return: CF set on error
  3741.     CF clear if successful
  3742.         display memory saved and display switched to one of the text modes
  3743.           02h, 03h or 07h.
  3744. Note:    MDEBUG calls this function only once every popup session before
  3745.       displaying its windows.
  3746. SeeAlso: AX=D000h,AX=D003h
  3747. --------N-2FD002BX4D44-----------------------
  3748. INT 2F - Multiplex - Lotus CD/Networker GET DATA AREA
  3749.     AX = D002h
  3750.     BX = 4D44h
  3751.     DX = bitmap identifying one loaded CD/Networker TSR
  3752. Return: ES:DI -> data area owned by TSR
  3753. Note:    the format of the data area changes with each minor revision, so it
  3754.       cannot be counted on
  3755. SeeAlso: AX=D000h"Lotus"
  3756. --------G-2FD003-----------------------------
  3757. INT 2F - MDEBUG display driver - RESTORE GRAPHIC DATA
  3758.     AX = D003h
  3759. Return: CF set on error
  3760.     CF clear if successful
  3761.         display restored to the mode it was in before calling AX=D002h and
  3762.           the display memory is restored
  3763. Note:    MDEBUG calls this function only once every popup session just before
  3764.      it exits to normal DOS.
  3765. SeeAlso: AX=D000h,AX=D002h
  3766. --------G-2FD004-----------------------------
  3767. INT 2F - MDEBUG display driver - SHOW SAVED DATA
  3768.     AX = D004h
  3769. Return: CF set on error
  3770.     CF clear if successful
  3771.         display switched to mode it was in before calling AX=D002h and the
  3772.           display memory is restored
  3773. Note:    This function needn't save the display memory before changing it.
  3774. SeeAlso: AX=D000h,AX=D005h
  3775. --------G-2FD005-----------------------------
  3776. INT 2F - MDEBUG display driver - SWITCH BACK TO TEXT SCREEN
  3777.     AX = D005h
  3778. Return: CF set on error
  3779.     CF clear if successful
  3780.         display restored to mode it was in before calling AX=D004h
  3781. Note:    This function needn't save or change the display memory
  3782. SeeAlso: AX=D000h,AX=D004h
  3783. --------G-2FD0-------------------------------
  3784. INT 2F - MDEBUG display driver - RESERVED FUNCTION NUMBERS
  3785.     AH = D0h
  3786.     AL = 06h-7Fh
  3787. Note:    these functions are reserved for future use
  3788. --------G-2FD0-------------------------------
  3789. INT 2F - MDEBUG display driver - USER DEFINED FUNCTION NUMBERS
  3790.     AH = D0h
  3791.     AL = 80h-FFh
  3792. Note:    these functions numbers are reserved for user defined features (e.g.
  3793.       communication between the transient und resident parts of the driver)
  3794. --------G-2FD100-----------------------------
  3795. INT 2F C - MDEBUG command driver - GET STATUS
  3796.     AX = D100h
  3797.     BX = version of MDEBUG (BH = major, BL = minor)
  3798.     CX = command driver counter
  3799. ---v1.60+---
  3800.     DS:SI -> MDEBUG identification table (see below)
  3801.     ES = segment of display memory used by MDEBUG
  3802.     DI = size of video mode used by MDEBUG
  3803.         (high byte = lines, low byte = columns)
  3804. Return: DL = FFh
  3805.     BX = version number of the driver if it is less than the version in BX,
  3806.          else unchanged
  3807.     CX incremented
  3808. Program: MDEBUG is a shareware memory-resident debugging tool by Bernd
  3809.       Schemmer, including a memory monitor, an interpreter, and a
  3810.       disassembler
  3811. Notes:    called by MDEBUG at start of popup session; if the version number
  3812.       returned in BX is less than 1.52 (1.60 for MDEBUG v1.70), MDEBUG will
  3813.       not call any of the other functions during this popup session
  3814.     MDEBUG can use any two consecutive multiplex numbers between C0h and
  3815.       FFh; the default is D0h for the display driver and D1h for the
  3816.       command driver (see INT 60/AH=00h"MDEBUG" for the multiplex numbers
  3817.       actually used)
  3818.     this function must end with a far call to the old INT 2F handler after
  3819.       changing the registers
  3820.     this function MUST be reentrant
  3821.     command drivers must also declare the following data at the given
  3822.       offsets in the code segment
  3823.         100h  3 BYTEs    JMP-command in .COM-files
  3824.         103h    BYTE    NOP-command (90h)
  3825.         104h 26 BYTEs    signature "Kommandotreiber für MDEBUG"
  3826.         11Eh 12 BYTEs    name of driver, e.g. "MDHISDRV.COM"
  3827.                 each driver must have a unique name
  3828.     MDEBUG will pass every key and command to the command driver(s) before
  3829.       checking for a valid internal command
  3830. SeeAlso: AX=D000h,AX=D101h
  3831.  
  3832. Format of MDEBUG identification table:
  3833. Offset    Size    Description
  3834.  -2    WORD    entry offset
  3835.  00h    WORD    CS of MDEBUG
  3836.  02h    DWORD    old INT 08h vector
  3837.  06h    DWORD    old INT 09h vector
  3838.  0Ah    DWORD    address INT 16h routine used by MDEBUG
  3839.  0Eh    BYTE    length of version string
  3840.  0Fh  N BYTEs    version string
  3841. --------G-2FD101-----------------------------
  3842. INT 2F - MDEBUG command driver - INITIALIZE DRIVER
  3843.     AX = D101h
  3844.     CX = command driver counter
  3845. Return: DL = FFh if successful
  3846.         CX incremented
  3847.          else error: all registers unchanged
  3848. Note:    this function must end with a  far call to the old INT 2F handler after
  3849.       changing the registers
  3850.     this function must be reentrant
  3851. --------G-2FD102-----------------------------
  3852. INT 2F - MDEBUG command driver - EXECUTE INTERPRETER COMMAND
  3853.     AX = D102h
  3854.     BL = first character of the interpreter command
  3855.     BH = last character of the interpreter command (or blank)
  3856.     DS:SI -> parameter for the interpreter command as ASCIZ string
  3857.     DS:DI -> MDEBUG data structure (see below)
  3858. Return: AL = FFh
  3859.     CF set on error
  3860.         AH = error number
  3861.         01h syntax error
  3862.         02h first shell of the command.com is activ
  3863.         03h esc pressed
  3864.         04h break pressed
  3865.         05h DOS is busy
  3866.         06h command ended
  3867.         07h division by zero
  3868.         08h invalid display driver
  3869.         09h invalid command driver
  3870.         0Ah error 8 and 9
  3871.         0Bh unknown error
  3872.         0Ch new error
  3873.             DS:SI -> ASCIZ error message (max 30 characters)
  3874.            else unknown error
  3875.     CF clear if successful
  3876.         AH = return code
  3877.         00h continue processing the command line
  3878.         01h leave MDEBUG popup session
  3879.         02h leave MDEBUG popup session and automatically popup again
  3880.             if the InDOS flag is zero
  3881.         03h not used (same as 00h)
  3882.         04h not used (same as 00h)
  3883.         05h put new command line into the input buffer,
  3884.             DS:SI -> new command line (ASCIZ string, max 66 chars)
  3885.         06h process new command line
  3886.             DS:SI -> new command line (ASCIZ string, max 66 chars)
  3887.            else unknown status, but continue processing commmand line
  3888. Note:    this function must end with a far call to the old INT 2F handler (with
  3889.       registers unchanged) if the driver does not support the interpreter
  3890.       command in BX.  Otherwise, the driver must not chain to the old
  3891.       INT 2F.
  3892.  
  3893. Format of MDEBUG data structure:
  3894. Offset    Size    Description
  3895.  00h    WORD    register SE
  3896.  02h    WORD    register OF
  3897.  04h    WORD    register FS
  3898.  06h    WORD    register FO
  3899.  08h    WORD    register AX
  3900.  0Ah    WORD    register BX
  3901.  0Ch    WORD    register CX
  3902.  0Eh    WORD    register DX
  3903.  10h    WORD    register SI
  3904.  12h    WORD    register DI
  3905.  14h    WORD    register DS
  3906.  16h    WORD    register ES
  3907.  18h    WORD    register BP
  3908.  1Ah    WORD    register SS
  3909.  1Ch    WORD    register SP
  3910.  1Eh    WORD    register FL (flags)
  3911.  20h    WORD    register R0
  3912.  22h    WORD    register R1
  3913.  24h    WORD    register R2
  3914.  26h    WORD    register R3
  3915.  28h    WORD    register R4
  3916.  2Ah    WORD    register R5
  3917.  2Ch    WORD    register R6
  3918.  2Eh    WORD    register R7
  3919.  30h    WORD    register R8
  3920.  32h    WORD    register CS, return-address
  3921.  34h    WORD    register IP, return-address
  3922.  36h    DWORD    saved pointer to data for key <F6> (v1.60)
  3923.         saved monitor address (v1.70)
  3924.  3Ah 12 WORDs    saved register values on last popup entry (for <F8> key)
  3925.         (original register values at popup entry of MDEBUG)
  3926.         AX, BX, CX, DX, SI, DI, DS, ES, BP, SS, SP, flags
  3927.  52h 12 WORDs    saved register values on last popup exit (for <SHIFT-F8> key)
  3928.         AX, BX, CX, DX, SI, DI, DS, ES, BP, SS, SP, flags
  3929.  6Ah    DWORD    address of the DOS-invars-table
  3930.  6Eh    DWORD    address of the InDOS flag
  3931.  72h    WORD    offset of the register which is used for the segment of the
  3932.         first monitor window
  3933.  74h    WORD    offset of the register which is used for the offset of the
  3934.         first monitor window
  3935.  76h    WORD    name of the register which is used for the segment of the
  3936.         first monitor segment
  3937.  78h    WORD    name of the register which is used for the offset of the first
  3938.         monitor window
  3939.  7Ah    WORD    pseudo register 1
  3940.  7Ch    WORD    pseudo register 2
  3941. --------G-2FD103-----------------------------
  3942. INT 2F - MDEBUG command driver - EXECUTE KEY IN THE MONITOR
  3943.     AX = D103h
  3944.     BX = key code (like result of an interrupt 16h call)
  3945.     CX = 0 -> the cursor is in the ASCII column of the monitor
  3946.     CX = 1 -> the cursor is in one of the hex fields of the monitor
  3947.     DS:SI -> MDEBUG data structure (see AX=D102h)
  3948.     ES:DI -> actual byte in the monitor
  3949. Return: AL = FFh
  3950.     AH = return code
  3951.         00h key processed, read next key
  3952.         01h leave MDEBUG popup session
  3953.         02h leave MDEBUG popup session and automatically popup again if DOS
  3954.         is not busy
  3955.         03h signal an error (beep)
  3956.         04h driver has redefined the key, proceed with the new key
  3957.         BX = new key code
  3958.         MDEBUG will not pass the new key to the command driver(s)
  3959.        else treat like code 00h
  3960. Note:    this function must end with a far call to the old INT 2F handler (with
  3961.       registers unchanged) if the driver does not support the key in BX.
  3962.       Otherwise, the driver must not chain to the old INT 2F.
  3963. SeeAlso: AX=D104h
  3964. --------G-2FD104-----------------------------
  3965. INT 2F - MDEBUG command driver - EXECUTE KEY IN THE INTERPRETER
  3966.     AX = D104h
  3967.     DS:SI -> MDEBUG data structure (see AX=D102h)
  3968. Return: AL = FFh
  3969.     AH = return code
  3970.         00h key processed, read next key
  3971.         01h leave MDEBUG popup session
  3972.         02h leave MDEBUG popup session and automactically popup again if
  3973.         DOS is not busy
  3974.         03h signal an error (beep)
  3975.         04h driver has redefined the key, proceed with the new key
  3976.         BX = new key code
  3977.         MDEBUG won't pass the new key to the command driver(s)
  3978.         05h put new command line into the input buffer
  3979.         DS:SI -> new command line (ASCIZ string, max 66 chars)
  3980.         06h process new command line
  3981.         DS:SI -> new command line (ASCIZ string, max 66 chars)
  3982.        else treat like code 00h
  3983. Note:    this function must end with a far call to the old INT 2F handler if the
  3984.       driver does not support the key in BX.  Otherwise, the driver must
  3985.       not chain to the old INT 2F.
  3986. SeeAlso: AX=D103h
  3987. --------G-2FD1-------------------------------
  3988. INT 2F - MDEBUG command driver - RESERVED FUNCTIONS
  3989.     AH = D1h
  3990.     AL = 05h-0Ah
  3991. Note:    these functions are reserved for future use
  3992. --------G-2FD110-----------------------------
  3993. INT 2F - MDEBUG command driver - GET ADDRESS OF THE OLD INT 2F
  3994.     AX = D110h
  3995. Return: DL = FFh
  3996.     ES:BX -> next program in the chain for INT 2F
  3997.     CX = code segment of this driver
  3998.     DI = offset of driver identification table (see below) (v1.60+)
  3999. Notes:    only called by the transient part of the driver
  4000.     must be reentrant and the driver must not chain this function to the
  4001.       old INT 2F
  4002.  
  4003. Format of the driver identification table:
  4004. Offset    Size    Description
  4005.  00h  26 BYTEs     signature "Kommandotreiber für MDEBUG"
  4006.                          ^- Note: ASCII 129,German U-umlaut
  4007.  27h  12 BYTEs     name of driver, e.g. "MDHISDRV.COM"
  4008.          each driver must have a unique name
  4009. --------G-2FD111-----------------------------
  4010. INT 2F - MDEBUG command driver - START DRIVER
  4011.     AX = D111h
  4012. Return: DL = FFh
  4013. Notes:    only called by the transient part of the driver to inform the resident
  4014.       part that it is installed
  4015.     the function must be reentrant and the driver mustn't chain this
  4016.       function to the old INT 2F
  4017. SeeAlso: AX=D101h,AX=D112h
  4018. --------G-2FD112-----------------------------
  4019. INT 2F - MDEBUG command driver - END DRIVER
  4020.     AX = D112h
  4021. Return: DL = FFh
  4022. Notes:    only called by the transient part of the driver to inform the resident
  4023.       part that it will be released after this function
  4024.     the function must be reentrant and the driver mustn't chain this
  4025.       function to the old INT 2F
  4026. SeeAlso: AX=D101h,AX=D111h
  4027. --------G-2FD1-------------------------------
  4028. INT 2F - MDEBUG command driver - RESERVED FUNCTIONS
  4029.     AH = D1h
  4030.     AL = 13h-7Fh
  4031. Note:    these functions are reserved for future use
  4032. --------G-2FD1-------------------------------
  4033. INT 2F - MDEBUG command driver - USER DEFINED FUNCTIONS
  4034.     AH = D1h
  4035.     AL = 80h-FFh
  4036. Note:    these functions are reserved for user defined features (e.g.
  4037.       communication between the transient und resident parts of the driver)
  4038. ----------2FD200-----------------------------
  4039. INT 2F - PCL-838.EXE - INSTALLATION CHECK
  4040.     AX = D200h
  4041. Return: AL = FFh if installed??? (documented as AX = return value)
  4042. Program: PCL-838 is a resident utility for controlling a stepmotor adapter
  4043.       board by Advantec
  4044. SeeAlso: AX=D201h"PCL-838",AX=D202h"PCL-838"
  4045. --------Q-2FD200BX5144-----------------------
  4046. INT 2F - Quarterdeck RPCI - INSTALLATION CHECK
  4047.     AX = D200h
  4048.     BX = 5144h ("QD")
  4049.     CX = 4D45h ("ME")
  4050.     DX = 4D30h ("M0")
  4051. Return: AL = FFh installed
  4052.     if BX,CX,DX registers were as specified on entry:
  4053.         BX = 4D45h ("ME")
  4054.         CX = 4D44h ("MD")
  4055.         DX = 5652h ("VR")
  4056. Notes:    AH=D2h is the default multiplex number for the Quarterdeck RPCI
  4057.       (Resident Program Communication Interface), but it may use the first
  4058.       available multiplex number in the range D2h through FFh, then C0h
  4059.       through D1h
  4060.     the RPCI is supported by QEMM v5.0+, QRAM, MANIFEST, VIDRAM, etc.
  4061.     for AL <> 0, if the BX/CX/DX values don't match the identifier of a
  4062.       Quarterdeck product, it just chains to the previous INT 2F handler
  4063. SeeAlso: AX=D201h/BX=4849h,AX=D201h/BX=4D41h,AX=D201h/BX=4D45h
  4064. SeeAlso: AX=D201h/BX=5145h,AX=D201h/BX=5649h
  4065. ----------2FD201-----------------------------
  4066. INT 2F - PCL-838.EXE - UNINSTALL
  4067.     AX = D201h
  4068. Return: AX = return value
  4069. SeeAlso: AX=D200h"PCL-838",AX=D202h"PCL-838"
  4070. --------m-2FD201BX4849-----------------------
  4071. INT 2F - Quarterdeck RPCI - GET QD HIMEM PRESENCE
  4072.     AX = D201h
  4073.     BX = 4849h ("HI")
  4074.     CX = 4D45h ("ME")
  4075.     DX = 4D51h ("MQ")
  4076. Return: BX = 4F4Bh ("OK")
  4077.     ES:DI -> HIMEM entry point
  4078. Note:    AH=D2h is the default multiplex number, but any value in the range
  4079.       D2h-FFh and then C0h-D1h may be used (see AX=D200h for details)
  4080. SeeAlso: AX=D200h,AX=D201h/BX=5145h
  4081. --------m-2FD201BX4849-----------------------
  4082. INT 2F - Quarterdeck RPCI - QEMM/QRAM v5.0+ - GET HIRAM MEMORY CHAIN
  4083.     AX = D201h
  4084.     BX = 4849h ("HI")
  4085.     CX = 5241h ("RA")
  4086.     DX = 4D30h ("M0")
  4087. Return: BX = 4F4Bh ("OK")
  4088.     CX = segment of start of HIRAM chain
  4089.     DX = reserved block owner (QEMM/QRAM code segment)
  4090. Notes:    AH=D2h is the default multiplex number, but any value in the range
  4091.       D2h-FFh and then C0h-D1h may be used (see AX=D200h for details)
  4092.     the HIRAM memory chain has the same format as the regular DOS 4.0
  4093.       memory chain (see INT 21/AH=52h), except that XMS Upper Memory Blocks
  4094.       have the block header program name field set to "UMB"; blocks whose
  4095.       "owner" field is set to the reserved segment returned in DX are
  4096.       locked-out regions such as video memory and ROMs.
  4097. SeeAlso: AX=12FFh/BX=0006h,AX=D200h
  4098. --------G-2FD201BX4D41-----------------------
  4099. INT 2F U - Quarterdeck RPCI - MANIFEST v1.0+ - INSTALLATION CHECK
  4100.     AX = D201h
  4101.     BX = 4D41h ("MA")
  4102.     CX = 4E49h ("NI")
  4103.     DX = 4645h ("FE")
  4104. Return: BX = 5354h ("ST")
  4105. Note:    AH=D2h is the default multiplex number, but any value in the range
  4106.       D2h-FFh and then C0h-D1h may be used (see AX=D200h for details)
  4107. SeeAlso: AX=D200h
  4108. --------E-2FD201BX4D45-----------------------
  4109. INT 2F U - Quarterdeck RPCI - DVDOS4GX.DVR - ???
  4110.     AX = D201h
  4111.     BX = 4D45h ("ME")
  4112.     CX = 5155h ("QU")
  4113.     DX = 5044h ("PD")
  4114. Return: AL = FFh
  4115.     BX = 4F4Bh ("OK")
  4116. Notes:    AH=D2h is the default; use the Quarterdeck installation check described
  4117.       under AX=D200h
  4118.     called by QEMM 6.03
  4119.     performs a variety of actions before setting return registers
  4120. SeeAlso: AX=D200h
  4121. --------m-2FD201BX5145-----------------------
  4122. INT 2F - Quarterdeck RPCI - QEMM v5.0+ - INSTALLATION CHECK
  4123.     AX = D201h
  4124.     BX = 5145h ("QE")
  4125.     CX = 4D4Dh ("MM")
  4126.     DX = 3432h ("42")
  4127. Return: BX = 4F4Bh ("OK")
  4128.     ES:DI -> QEMM API entry point (see INT 67/AH=3Fh)
  4129. Notes:    Quarterdeck programs (QEMM/QRAM/VIDRAM/MANIFEST/etc) will search for a
  4130.       free AH value from D2h through FFh, then C0h through D1h
  4131.     this call is not available under QEMM v6.00 unless Windows3 support
  4132.       has been disabled with the NW3 switch to QEMM386.SYS
  4133. SeeAlso: AX=D200h,AX=D201h/BX=4849h,INT 67/AH=3Fh
  4134. --------V-2FD201BX5649-----------------------
  4135. INT 2F u - Quarterdeck RPCI - VIDRAM v5.0+ - INSTALLATION CHECK
  4136.     AX = D201h
  4137.     BX = 5649h ("VI")
  4138.     CX = 4452h ("DR")
  4139.     DX = 414dh ("AM")
  4140. Return: BX = 4F4Bh ("OK")
  4141.     ES:DI -> VIDRAM entry point
  4142. Note:    Quarterdeck programs (QEMM/QRAM/VIDRAM/MANIFEST/etc) will search for a
  4143.       free AH value from D2h through FFh, then C0h through D1h
  4144. SeeAlso: AX=D200h
  4145.  
  4146. Call VIDRAM entry point with:
  4147.     AH = 00h get status
  4148.         Return: AL = VIDRAM state (see below)
  4149.             BL = extra RAM status
  4150.                 00h VIDRAM does not use extra RAM
  4151.                 01h VIDRAM uses EMS as extra RAM
  4152.                 02h VIDRAM uses EGA as extra RAM
  4153.             BH = feature flags
  4154.                 bit 0: override enabled
  4155.                 bit 1: mapped memory detected in A000h-B000h range
  4156.                 bit 2: top of memory not at 640K
  4157.                 bit 3: MDA detected
  4158.                 bit 4: high RAM exists in video area
  4159.                 bit 5: mapped memory detected in video area
  4160.                 bits 6-7: reserved???
  4161.             CL = current monitor (01h = mono, 80h = color)
  4162.             SI = current top of memory (paragraph)
  4163.             DI = segment of start of HiRAM chain
  4164.     AH = 01h setup
  4165.         AL = VIDRAM state (00h off, 01h no EGA graphics, 02h no graph)
  4166.         BL = extra RAM status (see above)
  4167.         BH = feature flags (see above)
  4168.         CL = monitor (01h = monochrome, 80h = color)
  4169.         SI = new top of memory (paragraph)
  4170.         DI = segment of start of HiRAM chain
  4171.     AH = 02h get end address of VIDRAM code
  4172.         Return: ES:DI -> VIDRAM partial map context (see below)
  4173. Return: CF set on error
  4174.     CF clear if successful
  4175.  
  4176. Format of partial map context (EMS 3.2):
  4177. Offset    Size    Description
  4178.  00h    BYTE    EMS version ID (32h)
  4179.  01h    WORD    EMM handle for this entry
  4180.  03h    BYTE    number of frames
  4181.  04h    BYTE    first page frame
  4182.  05h    WORD    offset from ES to previously saved map
  4183.  
  4184. Format of partial map context (EMS 4.0):
  4185. Offset    Size    Description
  4186.  00h    BYTE    EMS version ID (40h)
  4187.  01h    WORD    mappable segment count
  4188.  03h  N WORD    mappable segments
  4189.     WORD    offset to previously saved map???
  4190. ----------2FD202-----------------------------
  4191. INT 2F - PCL-838.EXE - EXECUTE PCL838 COMMANDS
  4192.     AX = D202h
  4193.     CX:BX -> parameter table
  4194. Return: AX = return value
  4195. SeeAlso: AX=D200h"PCL-838",AX=D201h"PCL-838"
  4196. --------R-2FD300BX4562-----------------------
  4197. INT 2F U - TeleReplica - INSTALLATION CHECK
  4198.     AX = D300h
  4199.     BX = 4562h
  4200.     CX = 2745h
  4201.     DX = serial port I/O base address??? (03F8h for v3.9)
  4202. Return: SI = segment of resident code
  4203.     AX = 251Dh
  4204.     BX = DF21h
  4205.     CX = F321h
  4206.     DX = ???
  4207. --------R-2FD3CB-----------------------------
  4208. INT 2F U - LapLink Quick Connect v6 - API
  4209.     AX = D3CBh
  4210.     CX = function
  4211.         0002h get ???
  4212.         Return: BX:AX -> ???
  4213.             CL = ???
  4214.             CH = ???
  4215.             DX = ???
  4216.             DI = COM1 I/O port???
  4217.             SI = COM2 I/O port???
  4218.         0003h initialization???
  4219.         0004h ???
  4220.         0005h initialization???
  4221.         0006h reset/clear ???
  4222.         Return: AX = 0000h
  4223.             ES:DI -> next byte after ??? cleared by this call
  4224.         0007h initialization???
  4225.         0008h uninstall
  4226.         Return: BX = status
  4227.                 0000h successful
  4228.                 FFFFh incomplete, stub remains in memory
  4229. Return: CX = 534Bh (except function 0002h)
  4230. Index:    uninstall;LapLink Quick Connect
  4231. --------l-2FD44D-----------------------------
  4232. INT 2F - 4DOS.COM v2.1+ - API
  4233.     AX = D44Dh
  4234.     BH = function
  4235.         00h installation check
  4236.         Return: AX = 44DDh
  4237.             BL = major version number
  4238.             BH = minor version number
  4239.             CX = PSP segment address for current invocation
  4240.             DL = 4DOS shell number (0 for the first (root) shell,
  4241.                  updated each time a new copy is loaded)
  4242.         01h (internal, v2.1-3.03) terminate current copy of 4DOS
  4243.         Return: nothing
  4244.         (internal, v4.0) ???
  4245.         Return: ES:BX -> data area (see below)
  4246.         02h ???
  4247.         DX = ???
  4248.     ---v2.1-3.03 only---
  4249.         03h EXEC program
  4250.         CX:DX -> EXEC record
  4251.         FEh deallocate shell number (passed through to root shell)
  4252.         ???
  4253.         FFh allocate shell number (passed through to root shell)
  4254. Note:    bug in v3.00 will crash system if unrecognized value in BH
  4255. SeeAlso: AX=D44Eh,AX=E44Dh,INT 21/AX=4403h
  4256. Index:    installation check;4DOS|installation check;NDOS
  4257.  
  4258. Format of EXEC record:
  4259. Offset    Size    Description
  4260.  00h    WORD    offset of ASCIZ program name in same segment as EXEC record
  4261.  02h    WORD    offset of DOS commandline in same segment as EXEC record
  4262.  04h    WORD    segment of environment for child process (see INT 21/AH=26h)
  4263.  
  4264. Format of 4DOS v4.0 data area:
  4265. Offset    Size    Description
  4266.  00h  2 BYTEs    ???
  4267.  06h    WORD    XMS handle for swapping
  4268.     ???
  4269. --------l-2FD44E-----------------------------
  4270. INT 2F - 4DOS v3.0+ - AWAITING USER INPUT
  4271.     AX = D44Eh
  4272. ---4DOS v3.01+---
  4273.     BX = 0000h 4DOS is ready to display prompt
  4274.        = 0001h 4DOS has displayed the prompt, about to accept user input
  4275. Return: handler must preserve SI, DI, BP, SP, DS, ES, and SS
  4276. Note:    v3.00 only makes the call corresponding to BX=0001h, does not set BX
  4277. SeeAlso: AX=D44Dh
  4278. --------K-2FD44FBX0000-----------------------
  4279. INT 2F - 4DOS v4.0+ - KSTACK.COM - INSTALLATION CHECK
  4280.     AX = D44Fh
  4281.     BX = 0000h
  4282. Return: AX = 44DDh if installed
  4283. SeeAlso: AX=D44Fh/BX=0001h
  4284. --------K-2FD44FBX0001-----------------------
  4285. INT 2F - 4DOS v4.0+ - KSTACK.COM - PLACE KEYSTROKES INTO KEYSTACK
  4286.     AX = D44Fh
  4287.     BX = 0001h
  4288.     CX = number of keystrokes (01h-FFh)
  4289.     DS:DX -> keystroke list (one word per keystroke)
  4290. Return: AX = status
  4291.         0000h successful
  4292.         nonzero failed
  4293.     BX,CX,DX destroyed
  4294. Notes:    the keystrokes are the exact values to return from subsequent calls to
  4295.       INT 16 with AH=00h,01h,10h, or 11h, with the following exceptions:
  4296.         0000h causes subfunctions 01h and 11h to indicate an empty
  4297.             keyboard buffer
  4298.         FFFFh is followed by a word indicating the number of clock
  4299.             ticks to delay before the next faked keystroke
  4300.     v4.00 KSTACK overwrites any unread keystrokes from the previous
  4301.       invocation, and does not range-check CX; it will overwrite memory
  4302.       following the resident portion if CX is greater than 100h.
  4303. SeeAlso: AX=D44Fh/BX=0000h,INT 16/AH=00h,INT 21/AX=4403h
  4304. --------G-2FD600-----------------------------
  4305. INT 2F - HEART.COM - INSTALLATION CHECK
  4306.     AX = D600h
  4307. Return: AX = 0303h (two hearts) if installed
  4308.         ES:DI -> buffer (see below)
  4309. Program: HEART.COM is a CPU lock-up/critical indicator utility by Mitch Davis.
  4310. Notes:    Once the host program has identified the address of the data area, it
  4311.       can change this to indicate safe/critical, alternate colours, etc.
  4312.     The entries for the color table are in char/attrib form.  Every two
  4313.       entries form a pair which is alternated between 68 times a minute.
  4314.       The first half of the table is for color videos, the second mono.
  4315.       Within each half, the first half is for the safe chars, and the
  4316.       second for the critical chars.
  4317.  
  4318. Format of buffer:
  4319. Offset    Size    Description
  4320.  00h  8 WORDs    table of colors/attributes (see notes above)
  4321.  10h    BYTE    flags
  4322.         bit 0: program is in critical section, so flash double
  4323.             exclamation mark
  4324.         bit 1: program is in safe code, so flash the heart character
  4325.  11h    WORD    position of heartbeat on screen, normally 009Eh (last column
  4326.         of second line)
  4327. ----------2FD600-----------------------------
  4328. INT 2F U - VEDIT VSWAP - INSTALLATION CHECK
  4329.     AX = D600h
  4330. Return: AL = D6h if installed
  4331. Program: VSWAP is the resident portion of VEDIT's "swapper" capability; VEDIT
  4332.       is a programmer's text editor by Greenview Data.
  4333. SeeAlso: AX=D601h,AX=D602h
  4334. ----------2FD601-----------------------------
  4335. INT 2F U - VEDIT VSWAP - ???
  4336.     AX = D601h
  4337.     BL = subfunction number???
  4338. Return: BL = return code ???
  4339.     ES = resident portion's data??? segment
  4340.     DX = resident portion's code segment
  4341. SeeAlso: AX=D600h"VSWAP"
  4342. ----------2FD602-----------------------------
  4343. INT 2F U - VEDIT VSWAP - EXEC PROGRAM WITH SWAP
  4344.     AX = D602h
  4345.     other registers set as for INT 21/AX=4B00h
  4346. Return: CF set on error
  4347.         AL = error code
  4348.         82h = failure due to ???
  4349.     CF clear on success
  4350. SeeAlso: AX=D600h"VSWAP",INT 21/AH=4Bh"EXEC"
  4351. --------N-2FD701BX0000-----------------------
  4352. INT 2F - BANYAN VINES v4+ - GET BANV INTERRUPT NUMBER
  4353.     AX = D701h
  4354.     BX = 0000h
  4355. Return: AX = 0000h installed
  4356.         BX = interrupt number (60h to 66h)
  4357.        nonzero not present
  4358. Note:    if AX is nonzero, VINES 3.x or earlier may be installed, thus it is
  4359.       necessary to examine the four bytes preceding the handlers for
  4360.       INT 60 through INT 66 for the string "BANV"
  4361. SeeAlso: AX=D702h,AX=D703h,AX=D704h
  4362. --------N-2FD702-----------------------------
  4363. INT 2F U - BANYAN VINES v4+ - PCPRINT interface
  4364.     AX = D702h
  4365.     BX = function
  4366.     ???
  4367. Return: ???
  4368. SeeAlso: AX=D701h,AX=D703h,INT 61/AX=0005h"Banyan"
  4369. --------N-2FD703-----------------------------
  4370. INT 2F U - BANYAN VINES v4+ - MAIL interface
  4371.     AX = D703h
  4372.     BX = function
  4373.     ???
  4374. Return: ???
  4375. SeeAlso: AX=D702h,AX=D704h
  4376. --------N-2FD704-----------------------------
  4377. INT 2F U - BANYAN VINES v4+ - Streettalk Directory Assistance interface
  4378.     AX = D704h
  4379.     BX = function
  4380.     ???
  4381. Return: ???
  4382. SeeAlso: AX=D703h,INT 61/AX=0007h"Banyan"
  4383. --------N-2FD800-----------------------------
  4384. INT 2F U - Novell NetWare Lite - CLIENT.EXE - INSTALLATION CHECK
  4385.     AX = D800h
  4386. Return: AL = FFh if installed
  4387.         DX = version number (0100h for v1.0, 0101h for v1.1)
  4388.         BX = data segment of resident copy
  4389.         ES:DI -> private API entry point (see below)
  4390.         SI = segment of resident code
  4391. SeeAlso: AX=7A00h,AX=D880h
  4392.  
  4393. Call CLIENT API entry point with:
  4394.     BX = function
  4395.         0000h get ???
  4396.         Return: DX = CLIENT version??? (0101h for v1.1)
  4397.             ES:BX -> ??? data
  4398.         0001h ???
  4399.         0002h ???
  4400.         0003h ???
  4401.         0004h ???
  4402.         0005h ???
  4403.         DL = ???
  4404.         ???
  4405.         Return: ???
  4406.         0006h get module name???
  4407.         ES:DI -> 16-byte buffer
  4408.         Return: CX = ???
  4409.             ES:DI filled with "NWLITE_CLIENT" 00h 00h 00h
  4410.         0007h ???
  4411.         DX:CX = ???
  4412.         ???
  4413.         Return: ???
  4414.         0008h ???
  4415.         0009h ???
  4416.         DL = ???
  4417.         ES:DI -> 16-byte buffer for ???
  4418.         Return: CF clear if successful
  4419.                 AX = 0000h
  4420.                 CX = 0000h
  4421.                 SI,DI destroyed
  4422.             CF set on error
  4423.                 AX = error code 4903h
  4424.         000Ah ???
  4425.         AH = subfunction
  4426.             00h get ???
  4427.             01h clear/set ??? flag
  4428.             AL = new state (00h cleared, 01h set)
  4429.             02h set ???
  4430.             DX = new value of ???
  4431.         Return: DX = old value of ???
  4432.         000Bh ???
  4433.         AX = ???
  4434.         ???
  4435.         Return: ???
  4436.         000Ch ???
  4437.         AX = ???
  4438.         ???
  4439.         Return: ???
  4440.         000Dh ???
  4441.         AX = ???
  4442.         ???
  4443.         Return: ???
  4444.         000Eh get original INT 17
  4445.         Return: CF clear
  4446.             ES:BX -> original INT 17
  4447.         000Fh ???
  4448.         0010h ???
  4449.         AX = ???
  4450.         ???
  4451.         Return: ???
  4452.         0011h get ???
  4453.         Return: CF clear
  4454.             DL = ???
  4455.         0012h get ???
  4456.         AL = index of ???
  4457.         ES:DI -> 10-byte buffer for ???
  4458.         Return: CF clear if successful
  4459.                 ES:DI buffer filled
  4460.                 AX,CX destroyed
  4461.             CF set on error
  4462.                 AX = error code (4907h if AL out of range)
  4463.         0013h get ???
  4464.         Return: CF clear
  4465.             DH = ???
  4466.             DL = ???
  4467.         0014h ???
  4468.         DL = ???
  4469.         ???
  4470.         Return: CF clear if successful
  4471.                 ???
  4472.             CF set on error
  4473.                 AX = error code 8056h
  4474.         0015h ???
  4475.         DX = ???
  4476.         Return: ES:DI -> ???
  4477.         other
  4478.         Return: CF set
  4479.             AX = 0001h (invalid function)
  4480. --------N-2FD856-----------------------------
  4481. INT 2F U - Novell NetWare Lite v1.1 - SERVER - GET ???
  4482.     AX = D856h
  4483. Return: AX = ??? (0001h for v1.1)
  4484.     BX = ??? (0004h for v1.1)
  4485.     CX = ??? (0F20h for v1.1)
  4486.     DS = segment of resident code
  4487.     ES = data segment of resident copy
  4488. --------N-2FD880-----------------------------
  4489. INT 2F U - Novell NetWare Lite v1.0+ - SERVER - INSTALLATION CHECK
  4490.     AX = D880h
  4491. Return: AL = FFh if installed
  4492.         DX = version number (0100h for v1.0, 0101h for v1.1)
  4493.         BX = data segment of resident copy
  4494.         CL = current state (00h SERVER is disabled, 01h SERVER is active)
  4495.         ES:DI -> private API entry point (see below)
  4496.         SI = ??? (offset of configuration info?)
  4497. SeeAlso: AX=7A00h,AX=D800h
  4498.  
  4499. Call SERVER API entry point with:
  4500.     BX = function
  4501.         0000h ???
  4502.         ???
  4503.         Return: ???
  4504.         Note: closes open files by calling INT 21/AH=3Eh
  4505.         0001h get connection information
  4506.         DX = connection number (0001h-max connections)
  4507.         ES:DI -> 28-byte buffer for connection information
  4508.         Return: CF clear if successful
  4509.                 ES:DI buffer filled
  4510.             CF set on error
  4511.                 AX = FFFFh
  4512.         other
  4513.         Return: CF set
  4514.             AX = 0001h (invalid function)
  4515. --------d-2FD8C0-----------------------------
  4516. INT 2F U - Novell NetWare Lite v1.1 - NLCACHE - INSTALLATION CHECK
  4517.     AX = D8C0h
  4518. Return: AL = FFh if installed
  4519.         CL = cache variant (01h NLCACHEC, 02h NLCACHEX, 03h NLCACHEM)
  4520.         DH = major version??? (01h for v1.1)
  4521.         DL = minor version??? (01h for v1.1)
  4522.         ES:DI -> private API entry point (see below)
  4523. Program: NLCACHE is a disk cache included with NetWare Lite
  4524. SeeAlso: AX=D800h,AX=D880h
  4525.  
  4526. Call NLCACHE API entry point with:
  4527.     BX = function
  4528.         0000h ???
  4529.         ???
  4530.         Return: CF clear if successful
  4531.                 AX = 0000h
  4532.                 ???
  4533.             CF set on error
  4534.                 AX = error code
  4535.         other
  4536.         Return: CF set
  4537.             AX = 0001h (invalid function)
  4538. --------F-2FDA00-----------------------------
  4539. INT 2F - ZyXEL ZFAX - INSTALLATION CHECK
  4540.     AX = DA00h
  4541. Return: AH = enabled state (00h = enabled, 01h = disabled)
  4542.     AL = 5Ah installed
  4543. Note:    ZFAX is the bundled FAX software which comes with the ZyXEL model
  4544.       fax modems.
  4545. SeeAlso: AX=CBDCh,AX=DA01h,AX=DA02h,AX=DA03h
  4546. --------F-2FDA01-----------------------------
  4547. INT 2F - ZyXEL ZFAX - UNINSTALL
  4548.     AX = DA01h
  4549. Return: AL = 00h Success
  4550.          01h Failure
  4551. SeeAlso: AX=DA00h
  4552. --------F-2FDA02-----------------------------
  4553. INT 2F - ZyXEL ZFAX - DISABLE
  4554.     AX = DA02h
  4555. Return: AL = 00h
  4556. SeeAlso: AX=DA03h
  4557. --------F-2FDA03-----------------------------
  4558. INT 2F - ZyXEL ZFAX - ENABLE
  4559.     AX = DA03h
  4560. Return: AL = 00h
  4561. SeeAlso: AX=DA02h
  4562. --------G-2FDA55-----------------------------
  4563. INT 2F U - TRAP.COM - INSTALLATION CHECK
  4564.     AX = DA55h
  4565.     DL = interrupt number
  4566.     DH = ???
  4567. Return: if installed
  4568.         AH = interrupt number
  4569.         AL = ???
  4570.         ES:BX -> ???
  4571. Program: TRAP is an interrupt call tracer by Patrick Phillipot/Udo Chrosziel
  4572. Note:    a separate copy of TRAP is loaded for each interrupt to be traced; thus
  4573.       the interrupt number is part of the installation check
  4574. --------N-2FDAB2-----------------------------
  4575. INT 2F U - Beame&Whiteside BWSNMP - INSTALLATION CHECK
  4576.     AX = DAB2h
  4577. Return: AX = 00FFh if installed
  4578.         BX:CX -> MIB table???
  4579. Program: BWSNMP is part of the BW-NFS package
  4580. SeeAlso: INT 62"BW-TCP"
  4581. --------K-2FDC00-----------------------------
  4582. INT 2F - GOLD.COM - INSTALLATION CHECK
  4583.     AX = DC00h
  4584. Return: AL = 00h not installed
  4585.        = FFh installed
  4586. Program: GOLD is a TSR by Bob Eager which makes the NumLock key return the code
  4587.       for F1; the purpose is to improve Kermit's VTxxx emulation
  4588. --------K-2FDC01-----------------------------
  4589. INT 2F - GOLD.COM - GET STATE
  4590.     AX = DC01h
  4591. Return: AL = status
  4592.         00h off
  4593.         01h on
  4594. SeeAlso: AX=DC00h,AX=DC02h
  4595. --------K-2FDC02-----------------------------
  4596. INT 2F - GOLD.COM - SET STATE
  4597.     AX = DC02h
  4598.     DL = new state
  4599.         00h off
  4600.         01h on
  4601. Return: AL = 00h (OK)
  4602. SeeAlso: AX=DC01h
  4603. --------t-2FDD-------------------------------
  4604. INT 2F - CappaCom programs - API
  4605.     AH = DDh
  4606.     AL = 00h general installation check
  4607.         Return: AL = FFh if any CappaCom programs are resident
  4608.     AL = FEh get info
  4609.         Return: ES:BX -> TSR info list (see below)
  4610.     AL = program identifier
  4611.         BH = function
  4612.         FDh get version
  4613.             Return: BX = version
  4614.         FFh installation check
  4615.             Return: AL = FFh if installed
  4616.                 BX = version
  4617.                 ES = segment of resident code
  4618.         others vary by program
  4619. Return: AL = status
  4620.         bit 7 set on error
  4621.         AL = 81h unknown function
  4622. Note:    CappaCom was originally SoftCom but changed its name due to a trademark
  4623.       conflict
  4624. Index:    installation check;SoftCom programs
  4625. Index:    installation check;CappaCom programs
  4626.  
  4627. Format of TSR info list:
  4628. Offset    Size    Description
  4629.  00h  9 BYTEs    blank-padded ASCIZ program name
  4630.  09h    BYTE    program ID
  4631.  0Ah    WORD    program's PSP segment
  4632.  0Ch    WORD    program version (major in high byte)
  4633.  0Eh    DWORD    pointer to next item in info list or 0000h:0000h
  4634.  12h    BYTE    number of interrupts hooked
  4635.  13h  5 BYTEs    interrupt numbers hooked by program
  4636.  18h  8 BYTEs    reserved
  4637. --------d-2FDD--BX7844-----------------------
  4638. INT 2F - xDISK v3.32+ - INSTALLATION CHECK
  4639.     AH = DDh
  4640.     BX = 7844h ('xD')
  4641.     CX = 4953h ('IS')
  4642.     DX = 4B3Fh ('K?')
  4643.     AL = desired drive (01h-1Ah) or 00h to check for xDISK on any drive
  4644.     ES:DI -> 25-byte data buffer (see below)
  4645. Return: AX = DDFFh if installed (on specified drive if AL nonzero on entry)
  4646.        BX = 87BBh
  4647.        DX = B4C0h
  4648.        ES:DI buffer filled
  4649.     CX,CF destroyed
  4650. SeeAlso: INT 21/AX=4404h"xDISK",INT 21/AX=4405h"xDISK"
  4651.  
  4652. Format of data buffer:
  4653. Offset    Size    Description
  4654.  00h    DWORD    pointer to ASCIZ driver signature "xDISK unit: X"
  4655.  04h    BYTE    flag: 01h if disk linked to DOS, 00h if unlinked
  4656.  05h    BYTE    flag: 01h if write protected, 00h if not
  4657.  06h    BYTE    flag: 01h if root directory full, 00h if not
  4658.  07h    BYTE    flag: 01h if free space uncompacted, 00h if compacted
  4659.  08h    BYTE    resizing state: 00h not resizable, 01h resized, 80h resizable
  4660.  09h    BYTE    flag: 01h inelastic resizable disk, 00h elastic
  4661.  0Ah  2 BYTEs    reserved
  4662.  0Ch    BYTE    flag: 01h collapsed disk, 00h not collapsed
  4663.  0Dh    BYTE    flag: 01h using all EMS, 00h some EMS free
  4664.  0Eh    BYTE    flag: 01h password enabled, 00h disabled
  4665.  0Fh    BYTE    flag: 01h password audio feedback, 00h no feedback
  4666.  10h    BYTE    flag: 01h password video feedback, 00h no feedback
  4667.  11h    BYTE    flag: 01h confirm changes, 00h no confirmation
  4668.  12h    BYTE    flag: 01h terse display, 00h verbose display
  4669.  13h    BYTE    flag: 01h click speaker on disk access, 00h no click
  4670.  14h    BYTE    flag: 01h flash icon on disk access, 00h no icon flash
  4671.  15h    BYTE    FAT entry size: 00h 12-bit, FFh 16-bit
  4672.  16h    WORD    count of open files in RAM disk
  4673.  18h    BYTE    unused
  4674. --------Q-2FDE00BX4445-----------------------
  4675. INT 2F - DESQview v2.26+ External Device Interface - INSTALLATION CHECK
  4676.     AX = DE00h
  4677.     BX = 4456h ("DV")
  4678.     CX = 5844h ("XD")
  4679.     DX = 4931h ("I1")
  4680. Return: AL = FFh if installed (even if other registers do not match)
  4681.     if BX,CX, and DX were as specified on entry,
  4682.         BX = 4845h ("HE")
  4683.         CX = 5245h ("RE")
  4684.         DX = 4456h ("DV")
  4685. Notes:    AH=DEh is the default XDI multiplex number, but may range from C0h-FFh
  4686.     programs should check for XDI starting at DEh to FFh, then C0h to DDh
  4687.     the XDI handler should not issue any DOS or BIOS calls, nor should it
  4688.       issue DESQview API calls other than those allowed from hardware ints
  4689. SeeAlso: AX=DE02h,INT 15/AX=5400h
  4690. --------Q-2FDE01-----------------------------
  4691. INT 2F - DESQview v2.26+ External Device Interface - DRIVER CUSTOM SUBFUNCTION
  4692.     AX = DE01h
  4693.     BX = driver ID
  4694.     other registers as needed by driver
  4695. Notes:    XDI drivers should pass this call through to previous handler if ID
  4696.       does not match
  4697.     DESQview never calls this function
  4698. --------Q-2FDE01BX4450-----------------------
  4699. INT 2F U - Quarterdeck QDPMI.SYS v1.0 - INSTALLATION CHECK
  4700.     AX = DE01h
  4701.     BX = 4450h ("DP")
  4702.     CX = 4D49h ("MI")
  4703.     DX = 3039h ("09")
  4704. Return: AL = FFh if installed
  4705.         BX = 4D42h ("MB")
  4706.         CX = 4921h ("I!")
  4707.         DX = 8F4Fh
  4708.         ES:DI -> filename of DPMI host overlay
  4709. Note:    the installation check consists of testing for the existence of the
  4710.       character device QDPMI$$$
  4711. SeeAlso: INT 2F/AX=1687h,INT 31/AX=0000h
  4712. Index:    installation check;QDPMI
  4713. --------U-2FDE01BX5242-----------------------
  4714. INT 2F - DESQview v2.26+ XDI - CUSTOM SUBFUNCTION, Ralf Brown's XDI drivers
  4715.     AX = DE01h
  4716.     BX = 5242h ("RB")
  4717.     CX:DX = program identifier
  4718.         656F7000h ("eop",0) for DVeop
  4719. Return: AX = 5242h ("RB") if installed
  4720.         ES:BX -> data or entry point
  4721.         CX = version number (CH = major, CL = minor)
  4722.  
  4723. Call DVeop entry point with:
  4724.     ES:DI -> callback address or 0000h:0000h to remove callback
  4725. Return: AX = status
  4726.         0000h failed (callback table full or attempted to remove non-
  4727.             existent callback)
  4728.         0001h successful
  4729.         ES:DI -> chaining address
  4730.     BX,CX,DX destroyed
  4731. Notes:    the callback function is called with a simulated interrupt when the
  4732.       DESQview window containing it is closed; it should perform all
  4733.       necessary cleanup and then perform a FAR jump to the chaining address
  4734.       or an IRET if the chaining address is 0000h:0000h
  4735.     if the program wishes to remove itself before the window is closed, it
  4736.       should call the DVeop entry point with the previously returned
  4737.       chaining address and ignore the returned chaining address.
  4738. --------U-2FDE01BX7474-----------------------
  4739. INT 2F - DESQview v2.26+ XDI - CUSTOM SUBFUNCTION, DVTXDI.COM
  4740.     AX = DE01h
  4741.     BX = 7474h
  4742.     CL = function
  4743.         00h installation check
  4744.         Return: AL = FFh
  4745.         01h get process handle
  4746.         DX = keys on Open Window menu (DL = first, DH = second)
  4747.         Return: AX = process handle or 0000h if not running
  4748.         02h (v1.3+) set TMAN handle
  4749.         DX = TMAN process handle
  4750.         03h (v1.3+) set open keys to ignore on next CL=01h call
  4751.         DX = keys on Open Window menu (DL = first, DH = second)
  4752. Return: BX = 4F4Bh ("OK")
  4753.     DL destroyed
  4754. Note:    DVTXDI is distributed as part of the shareware products DVTree (DOS
  4755.      shell/DESQview process manager) and DVTMAN by Mike Weaver
  4756. Index:    installation check;DVTXDI
  4757. --------U-2FDE01BX7575-----------------------
  4758. INT 2F - DESQview v2.26+ XDI - CUSTOM SUBFUNCTION, DVSIXDI.COM
  4759.     AX = DE01h
  4760.     BX = 7575h
  4761.     CX = function
  4762.         0000h installation check
  4763.         Return: AX = 00FFh if installed
  4764.         0001h turn on notification (currently unused)
  4765.         Return: AX = 0001h
  4766.         0002h turn off notification (currently unused)
  4767.         Return: AX = 0001h
  4768.         0003h get process information
  4769.         Return: AX = status
  4770.                 0000h failed
  4771.                 0001h successful
  4772.                 BX = last instantaneous time slice
  4773.                     in 1/100s (v1.10)
  4774.                     in 1/18s (v1.11+)
  4775.                 CX = number of processes
  4776.                 DX = number of "(starting)" records (v2.00+)
  4777.                 SI = number of records in process info array
  4778.                      (v2.00+) (always 15 for v1.x)
  4779.                 ES:DI -> process info array (see below)
  4780.         0004h get version
  4781.         Return: AH = major version
  4782.             AL = minor version
  4783.         0005h (v1.10+) get time since DESQview started
  4784.         Return: DX:AX = 1/100s since DV start (v1.10)
  4785.             DX:AX = 1/18s since DV start (v1.11+)
  4786.         0006h (v1.10+) get number of task switches
  4787.         Return: DX:AX = total task switches
  4788.             CX = task switches in last instantaneous interval
  4789. Notes:    DVSIXDI is part of the DVSI (DESQview System Information) package by
  4790.       Daniel J. Bodoh
  4791.     for v1.00, function 0003h allocates common memory, which the caller
  4792.       must deallocate after reading the process information; only the
  4793.       currently used records are placed in the buffer
  4794.     for v1.10+, function 0003h merely returns a pointer to the internal
  4795.       array of process information; the caller should make a copy of the
  4796.       array while inside a critical section (see INT 15/AX=101Bh).    Only
  4797.       those records with bit 7 of the first byte set are valid.
  4798. Index:    installation check;DVSIXDI
  4799.  
  4800. Format of information for one process (v1.00):
  4801. Offset    Size    Description
  4802.  00h    BYTE    flags
  4803.         bit 7: process slot is valid
  4804.  01h    WORD    offset into DESQVIEW.DVO of program's record if started from
  4805.         Open Windows menu, else undefined
  4806.  03h    WORD    Switch Windows window number
  4807.  05h    WORD    segment of process handle
  4808.  07h    WORD    number of tasks owned by process
  4809.  09h    WORD    mapping context of process (see INT 15/AX=1016h)
  4810.  0Bh    DWORD    hook for other programs
  4811.  
  4812. Format of information for one process (v1.10-v2.00):
  4813. Offset    Size    Description
  4814.  00h    BYTE    flags
  4815.         bit 7: valid record
  4816.         bit 6: (v2.00+) record is allocated; if bit 7 clear, process
  4817.             is "(starting)" and only offsets 01h and 09h are valid
  4818.         bit 5: (v2.00+) this app currently owns the CPU
  4819.         bit 4: reserved (0)
  4820.         bit 3: DESQview system task
  4821.         bit 2: reserved (0)
  4822.         bit 1: task has keyboard (currently unused)
  4823.         bit 0: task swapped out (currently unused)
  4824.  01h    WORD    Open Window keys
  4825.  03h    WORD    Switch Windows number
  4826.  05h    WORD    segment of process handle
  4827.  07h    WORD    number of tasks for process
  4828.  09h    WORD    process mapping context
  4829.  0Bh    DWORD    time process started (relative to start of DESQview)
  4830.  0Fh    DWORD    time process last got CPU (relative to start of DESQview)
  4831.  13h    DWORD    time process last gave up CPU (relative to start of DESQview)
  4832.  17h    DWORD    total CPU time since process started
  4833.  1Bh    DWORD    CPU time at start of current instantaneous interval
  4834.  1Fh    DWORD    CPU time in current instantaneous interval
  4835.  23h    DWORD    hook for other programs
  4836. Note:    all times are in 1/100s for v1.10, in 1/18s for v1.11+
  4837. --------Q-2FDE01BXFFFE-----------------------
  4838. INT 2F U - DESQview v2.26+ XDI - DVXMS.DVR - ???
  4839.     AX = DE01h
  4840.     BX = FFFEh
  4841.     CX = 4D47h ("MG")
  4842.     DX = 0052h (0,"R")
  4843. Return: AL = FFh
  4844.     DX = 584Dh
  4845. --------Q-2FDE02-----------------------------
  4846. INT 2F C - DESQview v2.26+ External Dev Interface - DV INITIALIZATION COMPLETE
  4847.     AX = DE02h
  4848.     BX = mapping context of DESQview
  4849.     DX = handle of DESQview system task
  4850. Note:    driver should pass this call to previous handler after doing its work
  4851. SeeAlso: AX=DE03h,AX=DE0Fh,INT 15/AX=5400h
  4852. --------Q-2FDE03-----------------------------
  4853. INT 2F C - DESQview v2.26+ External Dev Interface - DV TERMINATION
  4854.     AX = DE03h
  4855.     BX = mapping context of DESQview
  4856.     DX = handle of DESQview system task
  4857. Notes:    driver should pass this call to previous handler before doing its work
  4858.     DESQview makes this call when it is exiting, but before unhooking any
  4859.       interrupt vectors
  4860. SeeAlso: AX=DE02h,AX=DE0Fh,INT 15/AX=5407h
  4861. --------Q-2FDE04-----------------------------
  4862. INT 2F C - DESQview v2.26+ External Dev Interface - ADD PROCESS
  4863.     AX = DE04h
  4864.     BX = mapping context of new process (see INT 15/AX=1016h)
  4865.     DX = handle of process
  4866. Return: nothing
  4867. Notes:    XMS XDI handler (installed by default) allocates a 22-byte record
  4868.       (see below) from "common" memory to control access to XMS memory
  4869.     all DOS, BIOS, and DV API calls are valid in handler
  4870.     driver should pass this call to previous handler after processing it
  4871. SeeAlso: AX=DE05h,AX=DE06h,INT 15/AX=5401h
  4872.  
  4873. Format of XMS XDI structure:
  4874. Offset    Size    Description
  4875.  00h    DWORD    pointer to 10-byte record???
  4876.  04h    DWORD    pointer to next XMS XDI structure
  4877.  08h    WORD    mapping context
  4878.  0Ah    BYTE    ???
  4879.  0Bh  5 BYTEs    XMS entry point to return for INT 2F/AX=4310h
  4880.         (FAR jump to next field)
  4881.  10h  6 BYTEs    FAR handler for XMS driver entry point
  4882.         (consists of a FAR CALL followed by RETF)
  4883. --------Q-2FDE05-----------------------------
  4884. INT 2F C - DESQview v2.26+ External Dev Interface - REMOVE PROCESS
  4885.     AX = DE05h
  4886.     BX = mapping context of process (see INT 15/AX=1016h)
  4887.     DX = handle of last task in process
  4888. Return: nothing
  4889. Notes:    XMS XDI handler releases the structure allocated by AX=DE04h
  4890.     driver should pass this call to previous handler before processing it
  4891.     all DOS, BIOS, and DV API calls except those generating a task switch
  4892.       are valid in handler
  4893. SeeAlso: AX=DE04h,AX=DE07h,INT 15/AX=5402h
  4894. --------Q-2FDE06-----------------------------
  4895. INT 2F C - DESQview v2.26+ External Dev Interface - CREATE TASK
  4896.     AX = DE06h
  4897.     BX = mapping context of process containing task
  4898.     DX = handle of new task
  4899. Notes:    driver should pass this call to previous handler after processing it
  4900.     all DOS, BIOS, and DV API calls are valid in handler
  4901. --------Q-2FDE07-----------------------------
  4902. INT 2F C - DESQview v2.26+ External Dev Interface - TERMINATE TASK
  4903.     AX = DE07h
  4904.     BX = mapping context of process containing task
  4905.     DX = handle of task
  4906. Notes:    driver should pass this call to previous handler before processing it
  4907.     all DOS, BIOS, and DV API calls except those generating a task switch
  4908.       are valid in handler
  4909. SeeAlso: AX=DE04h,AX=DE06h,AX=DE10h
  4910. --------Q-2FDE08-----------------------------
  4911. INT 2F C - DESQview v2.26+ External Dev Interface - SAVE STATE
  4912.     AX = DE08h
  4913.     BX = mapping context of task being switched from (see INT 15/AX=1016h)
  4914.     DX = handle of task being switched from
  4915. Notes:    invoked prior to task swap, interrupts, etc
  4916.     driver should pass this call to previous handler after processing it
  4917. SeeAlso: AX=DE09h,INT 15/AX=5403h,INT 15/AX=DE27h
  4918. --------Q-2FDE09-----------------------------
  4919. INT 2F C - DESQview v2.26+ External Dev Interface - RESTORE STATE
  4920.     AX = DE09h
  4921.     BX = mapping context of task being switched to (see INT 15/AX=1016h)
  4922.     DX = handle of task being switched to
  4923. Notes:    state is restored except for interrupts
  4924.     driver should pass this call to previous handler before processing it
  4925. SeeAlso: AX=DE08h,INT 15/AX=5404h,INT 15/AX=DE27h
  4926. --------Q-2FDE0A-----------------------------
  4927. INT 2F C - DESQview v2.26+ External Dev Interface - CHANGE KEYBOARD FOCUS
  4928.     AX = DE0Ah
  4929.     BX = mapping context of task receiving focus
  4930.     DX = handle of running task
  4931. Notes:    driver should pass this call to previous handler before processing it
  4932.     this call often occurs inside a keyboard interrupt
  4933.     DV 2.42 does not provide this call to XDI handlers running inside a
  4934.       window; instead, it directly calls the INT 2F handler which was
  4935.       active at the time DV started
  4936. SeeAlso: INT 15/AX=DE26h,INT 15/AX=DE2Fh
  4937. --------Q-2FDE0B-----------------------------
  4938. INT 2F C - DESQview v2.26+ External Dev Interface - DVP PROCESSING COMPLETE
  4939.     AX = DE0Bh
  4940.     BX = mapping context of DESQview system task
  4941.     CX = number of system memory paragraphs required for the use of all
  4942.         XDI drivers (DV will add this to system memory in DVP buffer)
  4943.     DX = handle of DESQview system task
  4944.     SI = mapping context of new process if it starts
  4945.     ES:DI -> DVP buffer
  4946. Return: CX incremented as needed
  4947. Notes:    once DV invokes this function, the DVP buffer contents may be changed
  4948.     driver should pass this call to previous handler before processing it
  4949. --------Q-2FDE0C-----------------------------
  4950. INT 2F C - DESQview v2.26+ External Dev Interface - SWAP OUT PROCESS
  4951.     AX = DE0Ch
  4952.     BX = mapping context of task being swapped out (see INT 15/AX=1016h)
  4953.     DX = handle of DESQview system task
  4954. Note:    driver should pass this call to previous handler after processing it
  4955. --------Q-2FDE0D-----------------------------
  4956. INT 2F C - DESQview v2.26+ External Dev Interface - SWAP IN PROCESS
  4957.     AX = DE0Dh
  4958.     BX = mapping context of process just swapped in (see INT 15/AX=1016h)
  4959.     DX = handle of DESQview system task
  4960. Note:    driver should pass this call to previous handler before processing it
  4961. --------Q-2FDE0E-----------------------------
  4962. INT 2F C - DESQview v2.26+ External Dev Interface - DVP START FAILED
  4963.     AX = DE0Eh
  4964.     BX = mapping context of DESQview system task
  4965.     DX = handle of DESQview system task
  4966.     SI = mapping context of failed process (same as for call to AX=DE0Bh)
  4967. Note:    driver should pass this call to previous handler after processing it
  4968. --------Q-2FDE0F-----------------------------
  4969. INT 2F C - DESQview v2.50+ External Dev Interface - INITIALIZE DV
  4970.     AX = DE0Fh
  4971. Note:    DESQview 2.50+ calls this function just before it completes its
  4972.       initialization.  At the time of the call, DESQview has not yet
  4973.       changed any interrupt vectors
  4974. SeeAlso: AX=DE02h
  4975. --------Q-2FDE10-----------------------------
  4976. INT 2F C - DESQview v2.50+ External Dev Interface - FREE TASK
  4977.     AX = DE10h
  4978.     BX = mapping context of process (see INT 15/AX=1016h)
  4979.     DX = task handle of process
  4980. Note:    DESQview 2.50+ calls this function before it frees the task; it is
  4981.       similar to AX=DE07h but allows the XDI handler to make calls which
  4982.       cause context switches
  4983. SeeAlso: AX=DE06h,AX=DE07h
  4984. --------c-2FDF00-----------------------------
  4985. INT 2F - HyperWare programs - INSTALLATION CHECK
  4986.     AX = DF00h
  4987.     BX = product code
  4988.         4248h ('BH') HyperStb
  4989.         4448h ('DH') HyperDisk v4.20+
  4990.         4B48h ('KH') HyperKey
  4991.         5348h ('SH') HyperScreen
  4992.     CX = 0000h
  4993.     DX = 0000h
  4994. Return: AL = status
  4995.         00h not installed
  4996.         FFh multiplex number in use
  4997.         CX = 5948h ('YH') if selected product installed
  4998.         ---HyperDisk---
  4999.         BX = code segment of resident portion
  5000.         DX = HyperDisk local data version
  5001. Program: HyperDisk is a shareware disk cache by HyperWare (Roger Cross)
  5002. Note:    AH=DFh is the default; if it is already in use by some other program,
  5003.       HyperWare programs then scan multiplex numbers from C0h through FFh
  5004. SeeAlso: INT 13/AX=8EEDh
  5005. Index:    installation check;HyperDisk|installation check;HyperStb
  5006. Index:    installation check;HyperKey|installation check;HyperScreen
  5007. Index:    HyperDisk;installation check|HyperStb;installation check
  5008. Index:    HyperKey;installation check|HyperScreen;installation check
  5009. --------c-2FDF01BX4448-----------------------
  5010. INT 2F - HyperDisk v4.50+ - GET CURRENT CACHE STATE
  5011.     AX = DF01h
  5012.     BX = 4448h ('DH')
  5013. Return: AX = 0000h if function supported
  5014.         BX = number of cache buffers in use
  5015.         CX = number of cache buffers which have been modified
  5016.         DL = caching flags (see below)
  5017. Note:    AH=DFh is the default; if it is already in use by some other program,
  5018.       HyperWare programs then scan multiplex numbers from C0h through FFh
  5019. SeeAlso: AX=DF00h,AX=DF02h
  5020.  
  5021. Bitfields for caching flags:
  5022.  bit 0    staged writes enabled for floppy disks
  5023.  bit 1    staged writes enabled for hard disks
  5024.  bit 2    writes verified on floppy disks
  5025.  bit 3    writes verified on hard disks
  5026.  bit 4    reserved (0)
  5027.  bit 5    reserved (0)
  5028.  bit 6    floppy caching enabled
  5029.  bit 7    all caching functions enabled
  5030. --------c-2FDF02BX4448-----------------------
  5031. INT 2F - HyperDisk v4.50+ - SET CACHE STATE
  5032.     AX = DF02h
  5033.     BX = 4448h ('DH')
  5034.     DL = new caching flags (see AX=DF01h)
  5035. Return: AX = 0000h if supported
  5036.         BX = number of cache buffers in use
  5037.         CX = number of cache buffers which have been modified
  5038.         DL = previous caching flags (see AX=DF01h)
  5039. Program: HyperDisk is a shareware disk cache by HyperWare (Roger Cross)
  5040. Note:    AH=DFh is the default; if it is already in use by some other program,
  5041.       HyperWare programs then scan multiplex numbers from C0h through FFh
  5042. SeeAlso: AX=DF00h,AX=DF01h
  5043. --------U-2FE000-----------------------------
  5044. INT 2F - SETDRVER.COM v2.10+ - INSTALLATION CHECK
  5045.     AX = E000h
  5046. Return: AX = 4A52h ("JR") if present
  5047. Program: SETDRVER is a public domain TSR by Jacob Rieper which sets the
  5048.       apparent DOS version analogously to MS-DOS SETVER
  5049. Note:    this installation check differs from the usual one of returning AL=FFh
  5050. SeeAlso: AX=E001h,INT 21/AH=52h
  5051. --------K-2FE000DX5354-----------------------
  5052. INT 2F - StuffIt v3.21+ - INSTALLATION CHECK
  5053.     AX = E000h
  5054.     DX = 5354h ("ST")
  5055. Return: AL = FFh if installed
  5056.         BX = version (BH = major, BL = BCD minor)
  5057.         DX = segment of resident code
  5058. Program: StuffIt is a freeware delayed keyboard stuffer by Terje Mathisen
  5059. --------U-2FE001-----------------------------
  5060. INT 2F - SETDRVER.COM v2.10+ - GET SETDRVER VERSION
  5061.     AX = E001h
  5062. Return: AH = major version
  5063.     AL = minor version
  5064. SeeAlso: AX=E000h
  5065. --------U-2FE002-----------------------------
  5066. INT 2F - SETDRVER.COM v2.10+ - GET ORIGINAL DOS VERSION INFO
  5067.     AX = E002h
  5068. Return: AL = FFh if successful
  5069.         BH = major DOS version
  5070.         BL = minor DOS version
  5071.         CH = DOS version flag
  5072.         CL = OEM number
  5073.         DH = major DR-DOS version number (FFh if unknown)
  5074.         DL = minor DR-DOS version number (FFh if unknown)
  5075. SeeAlso: AX=E003h,AX=E007h,INT 21/AH=30h
  5076. --------U-2FE003-----------------------------
  5077. INT 2F - SETDRVER.COM v2.10+ - RESET INTERNAL VARIABLES
  5078.     AX = E003h
  5079.     BH = new major DOS version
  5080.     BL = new minor DOS version
  5081.     CH = new DOS version flag
  5082.     CL = new DOS revision number
  5083.     DH = new OEM number
  5084. SeeAlso: AX=E002h
  5085. --------U-2FE004-----------------------------
  5086. INT 2F - SETDRVER.COM v2.10+ - ENABLE TSR
  5087.     AX = E004h
  5088. Return: AL = FFh if successful
  5089. SeeAlso: AX=E000h,AX=E005h,AX=E006h
  5090. --------U-2FE005-----------------------------
  5091. INT 2F - SETDRVER.COM v2.10+ - DISABLE TSR
  5092.     AX = E005h
  5093. Return: AL = FFh if successful
  5094. SeeAlso: AX=E000h,AX=E004h,AX=E006h
  5095. --------U-2FE006-----------------------------
  5096. INT 2F - SETDRVER.COM v2.10+ - GET TSR STATUS
  5097.     AX = E006h
  5098. Return: AL = FFh if successful
  5099.         BL = status
  5100.         01h resident and active
  5101.         02h resident and inactive
  5102. --------U-2FE007-----------------------------
  5103. INT 2F - SETDRVER.COM v2.10+ - GET TaskMAX STATUS AT INSTALLATION
  5104.     AX = E007h
  5105. Return: AL = FFh if successful
  5106.         BL = status
  5107.         00h if TaskMAX not loaded before SETDRVER
  5108.         FFh if TaskMAX was loaded before SETDRVER
  5109. SeeAlso: AX=E003h
  5110. --------U-2FE0-------------------------------
  5111. INT 2F - SETDRVER.COM - RESERVED FOR FUTURE USE
  5112.     AH = E0h
  5113.     AL = 08h-10h
  5114. --------K-2FE100-----------------------------
  5115. INT 2F - Phantom2 v1.1+ - INSTALLATION CHECK
  5116.     AX = E100h
  5117. Return: AX = 0001h if installed
  5118.         DS:SI -> ASCIZ hotkey name
  5119.         DS:DI -> ASCIZ recording filename
  5120. Program: Phantom of the Keyboard II is a shareware keystroke recorder/replayer
  5121.       by P2 Enterprises
  5122. SeeAlso: AX=E101h,AX=E102h,AX=E103h,AX=E300h
  5123. Index:    hotkeys;Phantom2
  5124. --------K-2FE101-----------------------------
  5125. INT 2F - Phantom2 v1.1+ - FUNCTION REQUEST
  5126.     AX = E101h
  5127.     BX = function mask (see below)
  5128.     CX = code for hotkey (as returned by INT 16/AH=00h) if BX bit 6 set
  5129.     DS:DX -> ASCIZ filespec if BX bit 7 set
  5130. SeeAlso: AX=E100h
  5131. Index:    hotkeys;Phantom2
  5132.  
  5133. Bitfields for function mask
  5134.  bit 0    record
  5135.  bit 1    play
  5136.  bit 2    QuickPlay
  5137.  bit 3    loop
  5138.  bit 4    mode display toggle
  5139.  bit 5    sound toggle
  5140.  bit 6    set hotkey
  5141.  bit 7    set filespec
  5142. --------K-2FE102-----------------------------
  5143. INT 2F - Phantom2 v1.1+ - UNINSTALL
  5144.     AX = E102h
  5145. Return: AX = status
  5146.         0001h removal successful
  5147.         0002h not installed as TSR
  5148.         FFFFh disabled but not removed
  5149. SeeAlso: AX=E100h
  5150. --------K-2FE103-----------------------------
  5151. INT 2F - Phantom2 v2.8 - SET ??? FLAG
  5152.     AX = E103h
  5153. Return: AX = 0001h
  5154. SeeAlso: AX=E100h
  5155. --------K-2FE300-----------------------------
  5156. INT 2F - ANARKEY.COM - INSTALLATION CHECK
  5157.     AX = E300h
  5158. Return: AL = 00h not installed
  5159.          FEh if installed but suspended (v3.0+)
  5160.          FFh installed
  5161. Program: ANARKEY.COM is a commandline recall program by Steven Calwas
  5162. Note:    E3h is the default function number, but can be set to any value from
  5163.       C0h to FFh
  5164. SeeAlso: AX=E100h,AX=E301h,AX=E302h,AX=E303h,AX=E304h,AX=E305h,AX=E306h
  5165. SeeAlso: AX=E307h,INT 66"Newkey"
  5166. --------K-2FE301-----------------------------
  5167. INT 2F U - ANARKEY.COM v2+ - GET ???
  5168.     AX = E301h
  5169. Return: DX:BX -> ???
  5170. SeeAlso: AX=E300h
  5171.  
  5172. Format of returned data structure for ANARKEY v2.0:
  5173. Offset    Size    Description
  5174.  -7   7 BYTEs    signature ('ANARKEY')
  5175.  00h    WORD    ??? (I see 0001h in v2.0)
  5176.  02h    WORD    ??? (I see 0001h in v2.0)
  5177.  04h    WORD    ??? (I see 0 in v2.0)
  5178.  06h    WORD    PSP segment of next program loaded
  5179.  
  5180. Format of returned data structure for ANARKEY v3+:
  5181. Offset    Size    Description
  5182.  -1    BYTE    multiplex number
  5183.  00h    WORD    ??? (I see 0001h in v3.0-4.0)
  5184.  02h    WORD    ??? (I see 0001h in v3.0-4.0)
  5185.  04h    BYTE    ??? (I see 0 in v3.0-4.0)
  5186.  05h    WORD    PSP segment of next program loaded
  5187. --------K-2FE302-----------------------------
  5188. INT 2F U - ANARKEY.COM v3+ - ???
  5189.     AX = E302h
  5190.     BL = ???
  5191. Return: ???
  5192. SeeAlso: AX=E300h
  5193. --------K-2FE303-----------------------------
  5194. INT 2F U - ANARKEY.COM v3+ - ANARKMD API
  5195.     AX = E303h
  5196.     BL = function
  5197.         01h toggle insert mode
  5198.         02h display contents of history buffer
  5199.         03h write history buffer to file
  5200.         ES:DX -> file name
  5201.         04h clear history buffer
  5202.         05h undefine all aliases
  5203.         06h show aliases
  5204.         07h list programs using Unix switchar
  5205.         08h jump to bottom of history buffer
  5206.         09h (v4.0) add string to history buffer
  5207.         ES:DX -> ASCIZ string
  5208.         0Ah (v4.0) ???
  5209.         ES:DX -> ???
  5210.         0Bh (v4.0) copy string to edit buffer for use as next input line
  5211.         ES:DX -> ASCIZ string
  5212.         0Ch (v4.0) ???
  5213.         0Dh (v4.0) copy ??? to ???
  5214.         0Eh (v4.0) ???
  5215.         0Fh (v4.0) ???
  5216.         10h (v4.0) set ??? flag
  5217.         11h (v4.0) display error message about running in EMS under Windows
  5218. Return: ???
  5219. SeeAlso: AX=E300h
  5220. --------K-2FE304-----------------------------
  5221. INT 2F U - ANARKEY.COM v2+ - ???
  5222.     AX = E304h
  5223.     BL = ???
  5224. Return: ???
  5225. SeeAlso: AX=E300h
  5226. --------K-2FE305-----------------------------
  5227. INT 2F U - ANARKEY.COM v3+ - ENABLE/SUSPEND ANARKEY
  5228.     AX = E305h
  5229.     BL = new state
  5230.         01h suspended
  5231.         00h enabled
  5232. SeeAlso: AX=E300h
  5233. --------K-2FE306-----------------------------
  5234. INT 2F U - ANARKEY.COM v4.0 - GET ???
  5235.     AX = E306h
  5236. Return: AX = ???
  5237. SeeAlso: AX=E300h
  5238. --------K-2FE307-----------------------------
  5239. INT 2F U - ANARKEY.COM v4.0 - GET ???
  5240.     AX = E307h
  5241. Return: AX = ???
  5242.     BL = ???
  5243. SeeAlso: AX=E300h
  5244. --------l-2FE44D-----------------------------
  5245. INT 2F - NDOS - API
  5246.     AX = E44Dh
  5247. Note:    as NDOS is a licensed version of 4DOS v3.03, the API is identical to
  5248.       that for 4DOS, except that AH=E4h instead of D4h and the installation
  5249.       check returns AX=44EEh instead of AX=44DDh
  5250. SeeAlso: AX=D44Dh,AX=E44Eh
  5251. --------l-2FE44EBX0000-----------------------
  5252. INT 2F - NDOS - AWAITING USER INPUT
  5253.     AX = E44Eh
  5254.     BX = 0000h NDOS is ready to display prompt
  5255.        = 0001h NDOS has displayed the prompt, about to accept user input
  5256. Return: handler must preserve SI, DI, BP, SP, DS, ES, and SS
  5257. SeeAlso: AX=E44Dh
  5258. --------E-2FED00-----------------------------
  5259. INT 2F - Phar Lap DOS EXTENDERS - INSTALLATION CHECK
  5260.     AX = ED00h
  5261.     BL = DOS extender
  5262.         01h 286dosx v1.3+ (Software Development Kit)
  5263.         02h 286dosx v1.3+ (Run-Time Kit)
  5264.         03h 386dosx v4.0+ (SDK)
  5265.         04h 386dosx v4.0+ (RTK)
  5266. Return: AL = status
  5267.         00h not installed
  5268.         FFh installed
  5269.         SI = 5048h ("PH")
  5270.         DI = 4152h ("AR")
  5271.         CH = major version number
  5272.         CL = minor version number
  5273.         DX = flags
  5274.             bit 0: running under DPMI
  5275.             bit 1: running under Phar Lap VMM
  5276.         if running under DPMI:
  5277.             BX = DPMI version (BH = major, BL = minor)
  5278. SeeAlso: AH=A1h,AX=F100h,AX=FBA1h
  5279. --------E-2FED03-----------------------------C33!
  5280. INT 2F R - Phar Lap 386/DOS-Extender v4.1 - GET EXTENDER ENTRY POINT
  5281.     AX = ED03h
  5282.     CX = real-mode code segment
  5283.     DX = real-mode data segment
  5284. Return: CF clear if successful
  5285.         CX = protected-mode code segment selector
  5286.         DX = protected-mode data segment selector
  5287.         ES:DI -> real-mode entry point for calling protected-mode functions
  5288.             (see INT 21/AX=250Dh)
  5289.     CF set on error
  5290.         AX = error code
  5291.         0008h unable to allocate LDT descriptors
  5292. --------E-2FED80-----------------------------
  5293. INT 2F - Phar Lap 286|DOS Extender Lite v2.5 - ???
  5294.     AX = ED80h
  5295.     BL = DOS extender ID (see AX=ED00h)
  5296.     SI = 5048h ("PH")
  5297.     DI = 4152h ("AR")
  5298.     ???
  5299. Return: ???
  5300. --------y-2FEE00-----------------------------
  5301. INT 2F - GRIDLOC.EXE - INSTALLATION CHECK
  5302.     AX = EE00h
  5303. Return: AL = FFh if installed
  5304. Program: GRIDLOC is a PC security program by Intelligent Security Systems, Inc.
  5305. SeeAlso: INT 21/AH=40h"NB.SYS"
  5306. --------U-2FEE00-----------------------------
  5307. INT 2F - XVIEW - INSTALLATION CHECK
  5308.     AX = EE00h
  5309. Return: AX = 00FFh if installed
  5310. Program: XVIEW is a hypertext viewer by Flambeaux Software, Inc.
  5311. --------N-2FEE00-----------------------------
  5312. INT 2F - WEB v4.02 - INSTALLATION CHECK
  5313.     AX = EE00h
  5314. Return: AL = status
  5315.         00h not installed
  5316.         FFh installed
  5317. Program: WEB is an IPX-based peer-to-peer network by Webcorp.
  5318. SeeAlso: AH=EEh"WEB",AX=EEF0h
  5319. --------U-2FEE01-----------------------------
  5320. INT 2F - XVIEW - POP UP GIVING TOPIC SEARCH KEYWORD
  5321.     AX = EE01h
  5322.     DS:DX -> ASCIZ string containing case-insensitive keyword to look up
  5323. Return: AX = status (see below)
  5324. Note:    the specified keyword should be a hyperlink in the _IndexPage of some
  5325.       database; the current database is searched first
  5326. SeeAlso: AX=EE00h"XVIEW",AX=EE02h,AX=EE03h,AX=EE04h,AX=EE06h
  5327.  
  5328. Values for status:
  5329.  0000h    successful
  5330.  00F1h    unknown subfunction
  5331.  00F2h    unable to pop up
  5332. --------U-2FEE02-----------------------------
  5333. INT 2F - XVIEW - POP UP GIVING A PAGE NUMBER
  5334.     AX = EE02h
  5335.     DX = physical page number or anchor page number (see below)
  5336. Return: AX = status (see AX=EE01h)
  5337. Note:    physical page numbers are assigned by the hypertext compiler, and
  5338.       will change if a page is inserted in the middle
  5339. SeeAlso: AX=EE00h"XVIEW",AX=EE01h,AX=EE05h,AX=EE06h
  5340.  
  5341. Values for anchor page number:
  5342.  FFEAh    _Credits
  5343.  FFECh    _SearchTopics
  5344.  FFEDh    _SearchText
  5345.  FFF0h    _ManualList
  5346.  FFF5h    _HelpOnHelp
  5347.  FFF8h    _HomePage
  5348.  FFF9h    _IndexPage
  5349. --------U-2FEE03-----------------------------
  5350. INT 2F - XVIEW - POP UP GIVING FILENAME AND SEARCH TOPIC OR PAGE NUMBER
  5351.     AX = EE03h
  5352.     DS:DX -> data packet (see below)
  5353. Return: AX = status (see AX=EE01h)
  5354. SeeAlso: AX=EE00h"XVIEW",AX=EE01h,AX=EE02h,AX=EE06h
  5355.  
  5356. Format of data packet:
  5357. Offset    Size    Description
  5358.  00h    DWORD    -> ASCIZ database filespec (0000h:0000h for current database)
  5359.  04h    DWORD    -> ASCIZ text to look up or 0000h:0000h
  5360.  08h    WORD    page number (0000h if keyword used)
  5361.  0Ah  6 BYTEs    reserved
  5362. --------U-2FEE04-----------------------------
  5363. INT 2F - XVIEW - POP UP AND READ SCREEN FOR SEARCH TOPIC KEYWORD
  5364.     AX = EE04h
  5365. Return: AX = status (see AX=EE01h)
  5366. Note:    equivalent to the action taken when the user presses the Alt-L hotkey
  5367. SeeAlso: AX=EE00h"XVIEW",AX=EE01h,AX=EE03h,AX=EE06h
  5368. --------U-2FEE05-----------------------------
  5369. INT 2F - XVIEW - POP UP TO MOST-RECENTLY VIEWED PAGE
  5370.     AX = EE05h
  5371. Return: AX = status (see AX=EE01h)
  5372. Note:    equivalent to the action taken when the user presses the Alt-H hotkey
  5373. SeeAlso: AX=EE00h"XVIEW",AX=EE02h,AX=EE06h
  5374. --------U-2FEE06-----------------------------
  5375. INT 2F - XVIEW - WAIT FOR POP-DOWN AND GET EXIT CODE
  5376.     AX = EE06h
  5377. Return: AX = status (see also AX=EE01h)
  5378.         0001h specified filename is not an xText database
  5379.         0002h no databases found
  5380.         0003h bad data in file
  5381.         0004h memory shortage
  5382.         0005h unable to open the requested file
  5383.         0007h invalid page number for file
  5384. Note:    although this call is not required, the exit code can alert the
  5385.       caller to problems; if the call is not made, the program should
  5386.       enforce a delay of about 1/2 second to allow the viewer to pop up,
  5387.       and should not get keyboard input or attempt disk accesses during
  5388.       the delay
  5389. SeeAlso: AX=EE00h"XVIEW",AX=EE01h,AX=EE02h,AX=EE03h,AX=EE04h,AX=EE05h
  5390. --------N-2FEE-------------------------------
  5391. INT 2F - WEB v4.02 - WEB MODULE INSTALLATION CHECK
  5392.     AH = EEh
  5393.     AL = module ID (see below)
  5394. Return: AX = 0000h if installed
  5395.         ES:DI -> far entry point for module-specific API calls (see below)
  5396. Program: WEB is an IPX-based peer-to-peer network by Webcorp.
  5397. SeeAlso: AX=EE00h"WEB"
  5398.  
  5399. Values for module ID:
  5400.  10h    server module (SERVER.EXE)
  5401.  20h    client module (CLIENT.EXE)
  5402.  30h    mail module (MAIL.EXE)
  5403.  40h    spooler (PCSPOOL.EXE)
  5404.  50h    kernel module (KERNEL.EXE)
  5405.  60h    SAP module (KERNEL.EXE)
  5406.  70h    resident station manager (SM.EXE)
  5407.  90h    router module (ROUTER.EXE)
  5408.  
  5409. Call server module entry point with:
  5410.     BX = function
  5411.         0000h remove server module
  5412.         Return: AX = status (0000h if successful, else WEB error code)
  5413.         0001h create SYSINFO file
  5414.         Note:    the SYSINFO file is used by the station manager when
  5415.               displaying info for a particular station
  5416.         0002h get server object table
  5417.         Return: CX = number of server objects
  5418.             ES:DI -> server object table
  5419.         Note:    server objects include drives and devices that the
  5420.               server module controls
  5421.         0003h get server variables
  5422.         Return: ES:DI -> server variables
  5423.  
  5424. Call client module entry point with:
  5425.     BX = function
  5426.         0000h remove client module
  5427.         Return: AX = status (0000h if successful, else WEB error code)
  5428.         0001h decrement client-only flag
  5429.         0002h increment client-only flag
  5430.         0005h set device capture
  5431.         Note:    decrements DeviceOutput flag, telling the spooler that
  5432.               it may trap device output again
  5433.         0006h clear device capture
  5434.         Note:    increments DeviceOutput flag, telling the spooler that
  5435.               it should not trap device output (this is used
  5436.               internally by the spooler to prevent it from trapping
  5437.               its own output)
  5438.         0007h get client debug pointer
  5439.         Return: ES:DI -> client debug data structure (see below)
  5440.         0008h get root drive
  5441.         Return: AL = WEB startup drive
  5442.         0009h get maximum possible drive/device redirections
  5443.         Return: AL = maximum drive redirections
  5444.             CH = maximum LPTx redirections
  5445.             CL = maximum COMx redirections
  5446.         000Ah suspend client
  5447.         Return: AX = previous value of Suspend flag
  5448.         000Bh resume client
  5449.         Return: AX = previous value of Suspend flag
  5450.         000Ch get instance data
  5451.         CX = maximum number of structures in array
  5452.         ES:DI -> buffer for array of WIN_INSTANCE_DATA structures
  5453.             (see below)
  5454.         Return: CX = number of structures actually returned
  5455.         Note:    used internally by WEB4WIN
  5456.  
  5457. Call mail module entry point with:
  5458.     BX = function
  5459.         0000h remove mail module
  5460.         Return: AX = status (0000h successful, else WEB error code)
  5461.         0001h set mail poll
  5462.         Note:    schedules the WEB mail module
  5463.         0002h set mail notify
  5464.         Note:    sets the Notify flag, which determines whether the
  5465.               user will be notified when mail is received
  5466.         0003h clear mail notify
  5467.         Note:    clears the Notify flag, which determines whether the
  5468.               user will be notified when mail is received
  5469.         0004h check whether new mail has arrived
  5470.         Return: AL = new mail status
  5471.                 00h no new mail since last call
  5472.                 else new mail has arrived
  5473.         Note:    also clears the new-mail flag after retrieving it
  5474.         0005h send notify
  5475.         ES:DI -> name of WEB user to be notified
  5476.         0006h get post office
  5477.         Return: ES:DI -> full network path of Post Office subdirectory
  5478.  
  5479. Call spooler entry point with:
  5480.     BX = function
  5481.         0000h remove PCSpool module
  5482.         Return: AX = status (0000h successful, else WEB error code)
  5483.         0001h set spooler poll
  5484.         Note:    schedules the WEB spooler
  5485.         0002h check spooler changed
  5486.         Return:    AX = 0000h
  5487.         Note:    this call is a NOP in current versions of WEB
  5488.  
  5489. Call kernel entry point with:
  5490.     BX = function
  5491.         0000h remove kernel module
  5492.         Return: AX = status (0000h successful, else WEB error code)
  5493.         0001h set kernel ^S filter
  5494.         DL = new state (00h don't filter ^S, nonzero do filter)
  5495.         0002h get kernel data area
  5496.         Return: ES:DI -> kernel data area
  5497.         0003h display dialog box
  5498.         CL = dialog box type
  5499.             00h password
  5500.             01h E-Note received notification
  5501.             02h Novell login
  5502.             03h general notification
  5503.         DL = number of rows to display
  5504.         ES:SI -> array of far pointers to rows to be displayed
  5505.         ES:DI -> Pascal-style input buffer
  5506.         Return: AX = status (0000h successful, else error code)
  5507.         0004h kernel service events
  5508.         0005h get kernel's in-critical-section flag
  5509.         Return: ES:DI -> kernel InCriticalSection flag
  5510.         0006h schedule DOS event
  5511.         AL = directive
  5512.             00h do not ignore WEB ExtraBusy flag
  5513.             01h ignore ExtraBusy flag
  5514.             02h (WEB4WIN) check that current Windows VM is foregrnd VM
  5515.         ES:SI -> WEB AES Event Control Block (ECB) (see below)
  5516.         Notes:    the WEB Asynchronous Event Scheduler is similar to the
  5517.               one used by IPX; this call schedules a special ECB
  5518.               to be executed at a later time.  Unlike IPX ECBs,
  5519.               the timeout must be set explicitly by the caller
  5520.             this function also calls function 0004h
  5521.         0007h check busy
  5522.         AL = directive
  5523.             00h do not ignore WEB ExtraBusy flag
  5524.             01h ignore ExtraBusy flag
  5525.             02h (WEB4WIN) check that current Windows VM is foregrnd VM
  5526.         Return: AX = status (0000h not busy, else busy)
  5527.         0008h set keyboard intercept
  5528.         Note:    currently a NOP which returns immediately
  5529.         0009h get keyboard intercept
  5530.         Note:    currently a NOP which returns immediately
  5531.         000Ah get dialog flags
  5532.         Return: ES:DI -> kernel dialog flags (see below)
  5533.         000Bh get network path
  5534.         Return: ES:DI -> fully-qualified network path of file where
  5535.                 the screen is stored on Dialog calls
  5536.         000Ch kernel alternate dialog
  5537.         CL = dialog box type
  5538.             00h password
  5539.             01h E-Note received notification
  5540.             02h Novell login
  5541.             03h general notification
  5542.         DL = number of rows to display
  5543.         ES:SI -> array of far pointers to rows to be displayed
  5544.         ES:DI -> Pascal-style input buffer
  5545.         Return: AX = status (0000h successful, else error code)
  5546.         Note:    this function is identical to function 0003h except
  5547.               that it does not notify WEB4WIN of the impending
  5548.               dialog request
  5549.         000Dh get machine/operating system type
  5550.         Return: AX = machine/operating system type
  5551.                 01h IBM PC, MS-DOS
  5552.                 02h IBM PC, DOSV (Japanese)
  5553.                 03h NEC PC-9800, JDOS (Japanese)
  5554.                 04h IBM PC, Korean DBC DOS
  5555.  
  5556. Format of client debug data structure:
  5557. Offset    Size    Description
  5558.  00h    WORD    total files
  5559.  02h    WORD    files free
  5560.  04h    WORD    no files
  5561.  06h    WORD    minimum files
  5562.  08h    WORD    total FCBs
  5563.  0Ah    WORD    total safe FCBs
  5564.  0Ch    WORD    FCBs in use
  5565.  0Eh    WORD    wrong FCB
  5566.  10h    WORD    compressed
  5567.  12h    WORD    retransmits
  5568.  
  5569. Format of WIN_INSTANCE_DATA structure:
  5570. Offset    Size    Description
  5571.  00h    DWORD    real-mode pointer to data to be instanced
  5572.  04h    WORD    size of data to be instanced
  5573.  
  5574. Format of WEB AES Event Control Block:
  5575. Offset    Size    Description
  5576.  00h    DWORD    link address
  5577.  04h    WORD    ESR address
  5578.  08h    BYTE    InUse flag
  5579.  09h    BYTE    completion code
  5580.  0Ah  3 BYTEs    reserved
  5581.  0Dh    WORD    timeout
  5582.  0Fh    BYTE    IgnoreExtra flag
  5583.  10h    WORD    PSP
  5584.  12h    DWORD    DTA
  5585.  16h    WORD    AX value for DOS critical information
  5586.  18h    WORD    BX value for DOS critical information
  5587.  1Ah    WORD    CX value for DOS critical information
  5588.  1Ch    WORD    DX value for DOS critical information
  5589.  
  5590. Values for kernel dialog flags:
  5591.  01h    dialog will timeout
  5592.  02h    display stars instead of entered keystrokes
  5593. --------N-2FEEF0-----------------------------
  5594. INT 2F - WEB v4.02 - WEB GENERAL NOTIFICATION
  5595.     AX = EEF0h
  5596.     BX = notification function ID (see below)
  5597. Return: varies by notification function
  5598. Program: WEB is an IPX-based peer-to-peer network by Webcorp.
  5599. Note:    the notification functions are used internally by WEB modules to notify
  5600.       other modules and external programs of actions or event, and should
  5601.       never be called by an application
  5602. SeeAlso: AX=EE00h"WEB"
  5603.  
  5604. Values for Notification Function ID:
  5605.  00h    node added
  5606.  01h    node deleted
  5607.  02h    dial attempt
  5608.  03h    dial failed
  5609.  04h    file close
  5610.  05h    close connection
  5611.  07h    check Windows mode
  5612.  20h    link up
  5613.  21h    link down
  5614. --------K-2FF000-----------------------------
  5615. INT 2F U - 4MAP - INSTALLATION CHECK
  5616.     AX = F000h
  5617. Return: AX = 00FFh
  5618. Program: 4MAP is a keybinding program for 4DOS (see AX=D44Dh) by Ho-Ping Tseng
  5619. Note:    returns AX=00FFh for any value of AL not listed here
  5620. SeeAlso: AX=D44Dh,AX=F001h,AX=F002h
  5621. --------K-2FF001-----------------------------
  5622. INT 2F U - 4MAP - GET KEY MAPPINGS
  5623.     AX = F001h
  5624. Return: ES:BX -> key mappings
  5625. SeeAlso: AX=F000h
  5626. --------K-2FF002-----------------------------
  5627. INT 2F U - 4MAP - INSERT CHARACTER INTO ???
  5628.     AX = F002h
  5629.     BL = character to insert
  5630. Return: AX = status
  5631.         0000h successful
  5632.         0001h buffer full
  5633. SeeAlso: AX=F000h,AX=F003h
  5634. --------K-2FF003-----------------------------
  5635. INT 2F U - 4MAP - INSERT CHARACTER INTO ???
  5636.     AX = F003h
  5637.     BL = character to insert
  5638. Return: AX = status
  5639.         0000h successful
  5640.         0001h buffer full
  5641. Program: 4MAP is a keybinding program for 4DOS (see AX=D44Dh) by Ho-Ping Tseng
  5642. SeeAlso: AX=F000h,AX=F002h
  5643. --------m-2FF1-------------------------------
  5644. INT 2F U - MIN-MEM v2.11 - INSTALLATION CHECK
  5645.     AH = F1h
  5646.     AL <> F1h
  5647. Return: AL = F1h if installed
  5648. Program: MIN-MEM is a shareware TSR manager by Biologic which permits up to 24
  5649.       popup TSRs to be loaded but swapped out to disk, EMS, or XMS.     One
  5650.       TSR at a time is brought back into memory at the user's request.
  5651. --------E-2FF100-----------------------------
  5652. INT 2F - DOS EXTENDER INSTALLATION CHECK
  5653.     AX = F100h
  5654. Return: AL = FFh if DOS extender present
  5655.         SI = 444Fh ("DO")
  5656.         DI = 5358h ("SX")
  5657. Note:    supported or soon to be supported by Phar Lap, Rational, Ergo, and IGC
  5658. SeeAlso: AH=A1h,AX=ED00h,AX=FBA1h/BX=0081h,INT 15/AX=BF02h
  5659. --------W-2FF200-----------------------------
  5660. INT 2F - WINX - INSTALLATION CHECK
  5661.     AX = F200h
  5662. Return: AX = 00FFh if installed
  5663. Program: WINX is a DOS/Windows utilities by Al Williams which can be used to
  5664.       launch Windows applications from a DOS Box; it was published in
  5665.       "DOS and Windows Protected Mode-Programming with DOS Extenders"
  5666.       (Addison-Wesley) and should not be confused with the Windows driver
  5667.       of the same name which is part of the DESQview/X package
  5668. --------W-2FF201-----------------------------
  5669. INT 2F - WINX - RETURN ADDRESS OF SERVER BUFFER
  5670.     AX = F201h
  5671. Return: AX = FFFFh if WINX is busy processing a different request
  5672.        = 0000h if successful
  5673.         BX:CX = address of server buffer
  5674.  
  5675. Format of server buffer
  5676. Offset    Size    Description
  5677.  00h    BYTE    command/status
  5678.         00h buffer available
  5679.         01h buffer contains result
  5680.         02h change directory
  5681.         03h execute program
  5682.         FFh terminate windows portion of WINX
  5683.  01h  ? BYTEs    command (03h) or directory (02h)
  5684.   or
  5685.  01h    DWORD    result (01h)
  5686. --------W-2FF202-----------------------------
  5687. INT 2F - WINX - SET SERVER'S WORKING DIRECTORY
  5688.     AX = F202h
  5689.     BX:CX -> directory
  5690. Return: AX = FFFFh if WINX is busy processing a different request
  5691.        = 0000h if successful
  5692. SeeAlso: AX=F200h,AX=F203h
  5693. --------W-2FF203-----------------------------
  5694. INT 2F - WINX - EXECUTE COMMAND
  5695.     AX = F203h
  5696.     BX:CX -> command
  5697. Return: AX = FFFFh if WINX is busy processing a different request
  5698.        = 0000h if successful
  5699. SeeAlso: AX=F200h,AX=F202h
  5700. --------d-2FF700-----------------------------
  5701. INT 2F - AUTOPARK.COM - INSTALLATION CHECK
  5702.     AX = F700h
  5703. Return: AL = 00h not installed
  5704.          FFh installed
  5705. Program: AUTOPARK.COM is a resident hard disk parker by Alan D. Jones
  5706. --------d-2FF701-----------------------------
  5707. INT 2F - AUTOPARK.COM - SET PARKING DELAY
  5708.     AX = F701h
  5709.     BX:CX = 32-bit count of 55ms timer ticks
  5710. --------d-2FF800CX4455-----------------------
  5711. INT 2F U - SuperStor PRO 2XON.COM - INSTALLATION CHECK
  5712.     AX = F800h
  5713.     CX = 4455h ("DU")
  5714.     DL = 45h ("E")
  5715. Return: AL = FFh if installed
  5716.         ES:BX -> ASCII signature "Universal Data Exchange"
  5717. Program: SuperStor is a disk-compression program by Addstor.
  5718. Note:    returns AX=0001h if AL is not 00h or 01h
  5719. SeeAlso: AX=1001h,AX=F801h
  5720. --------d-2FF801CX4455-----------------------
  5721. INT 2F U - SuperStor PRO 2XON.COM - UNINSTALL
  5722.     AX = F801h
  5723.     CX = 4455h ("DU")
  5724.     DL = 45h ("E")
  5725.     ES:BX = return address if successful
  5726. Return: at specified address if successfully removed from memory
  5727.     else
  5728.         AL = error code
  5729.         ???
  5730. Program: SuperStor is a disk-compression program by Addstor.
  5731. Note:    returns AX=0001h if AL is not 00h or 01h
  5732. SeeAlso: AX=1001h,AX=F800h
  5733. --------*-2FFB-------------------------------
  5734. INT 2F - Multiplex - RESERVED BY BORLAND INTERNATIONAL
  5735.     AH = FBh
  5736. --------a-2FFB00-----------------------------
  5737. INT 2F U - AutoBraille v1.1A - INSTALLATION CHECK
  5738.     AX = FB00h
  5739. Return: AX = 00FFh if installed
  5740. Program: AutoBraille is a shareware text-to-braille converter by KANSYS, Inc.
  5741. SeeAlso: INT 10/AX=3800h,INT 14/AX=F0F1h
  5742. --------U-2FFB00-----------------------------
  5743. INT 2F U - Jot-It! v1.50 - INSTALLATION CHECK
  5744.     AX = FB00h
  5745. Return: AX = FFFFh if installed
  5746.         BX = version (BCD, BH=major, BL=minor)
  5747. SeeAlso: AX=FB03h"Jot-It",AX=FB01h"Jot-It"
  5748. --------a-2FFB01-----------------------------
  5749. INT 2F U - AutoBraille v1.1A - ???
  5750.     AX = FB01h
  5751.     ???
  5752. Return: ???
  5753. --------U-2FFB01-----------------------------
  5754. INT 2F U - Jot-It! v1.50 - GET USER NAME
  5755.     AX = FB01h
  5756. Return: DX:BX -> ASCIZ user name
  5757. SeeAlso: AX=FB02h"Jot-It"
  5758. --------a-2FFB02-----------------------------
  5759. INT 2F U - AutoBraille v1.1A - ???
  5760.     AX = FB02h
  5761. Return: AH = ???
  5762.     AL = ???
  5763. --------U-2FFB02-----------------------------
  5764. INT 2F U - Jot-It! v1.50 - GET MESSAGE DIRECTORY
  5765.     AX = FB02h
  5766. Return: DX:BX -> ASCIZ name of directory in which messages are stored
  5767. SeeAlso: AX=FB01h"Jot-It"
  5768. --------a-2FFB03-----------------------------
  5769. INT 2F U - AutoBraille v1.1A - GET NEXT ???
  5770.     AX = FB03h
  5771. Return: AX = ???
  5772. --------U-2FFB03-----------------------------
  5773. INT 2F U - Jot-It! v1.50 - UNINSTALL
  5774.     AX = FB03h
  5775. Return: resident code removed from memory
  5776. Note:    CAUTION: NO checks are performed to ensure that the interrupt vectors
  5777.       being unhooked (08h,09h,28h,2Fh) actually point at the Jot-It! code
  5778. SeeAlso: AX=FB00h"Jot-It"
  5779. --------a-2FFB-------------------------------
  5780. INT 2F U - AutoBraille v1.1A - SET ???
  5781.     AH = FBh
  5782.     AL = 04h-08h
  5783. Return: AX = 0000h
  5784. --------a-2FFB-------------------------------
  5785. INT 2F U - AutoBraille v1.1A - SET ???
  5786.     AH = FBh
  5787.     AL = 09h-0Fh (???, 0Eh = COM1, 0Fh = COM2)
  5788. Return: ???
  5789. Program: AutoBraille is a shareware text-to-braille converter by KANSYS, Inc.
  5790. --------a-2FFB-------------------------------
  5791. INT 2F U - AutoBraille v1.1A - SET ???
  5792.     AH = FBh
  5793.     AL = 10h-1Fh
  5794.     ???
  5795. Return: ???
  5796. --------a-2FFB20-----------------------------
  5797. INT 2F U - AutoBraille v1.1A - SET ??? FLAGS
  5798.     AX = FB20h
  5799.     BL = flags to set
  5800. SeeAlso: AX=FB21h"AutoBraille"
  5801. --------a-2FFB21-----------------------------
  5802. INT 2F U - AutoBraille v1.1A - CLEAR ??? FLAGS
  5803.     AX = FB21h
  5804.     BL = flags to clear
  5805. SeeAlso: AX=FB20h"AutoBraille"
  5806. --------a-2FFB22-----------------------------
  5807. INT 2F U - AutoBraille v1.1A - SET ???
  5808.     AX = FB22h
  5809.     BL = ???
  5810. Program: AutoBraille is a shareware text-to-braille converter by KANSYS, Inc.
  5811. --------a-2FFB28-----------------------------
  5812. INT 2F U - AutoBraille v1.1A - ???
  5813.     AX = FB28h
  5814.     BX = ???
  5815.     ???
  5816. Return: ???
  5817. SeeAlso: AX=FB29h"AutoBraille"
  5818. --------a-2FFB29-----------------------------
  5819. INT 2F U - AutoBraille v1.1A - ???
  5820.     AX = FB29h
  5821.     BX = ???
  5822.     ???
  5823. Return: ???
  5824. SeeAlso: AX=FB28h"AutoBraille"
  5825. --------a-2FFB-------------------------------
  5826. INT 2F U - AutoBraille v1.1A - SET ???
  5827.     AH = FBh
  5828.     AL = 2Bh-34h
  5829.     BX = ???
  5830. --------a-2FFB35-----------------------------
  5831. INT 2F U - AutoBraille v1.1A - SET ???
  5832.     AX = FB35h
  5833.     BL = ???
  5834. --------a-2FFB36-----------------------------
  5835. INT 2F U - AutoBraille v1.1A - SET ???
  5836.     AX = FB36h
  5837.     BL = ???
  5838. --------a-2FFB37-----------------------------
  5839. INT 2F U - AutoBraille v1.1A - SET ???
  5840.     AX = FB37h
  5841.     BL = ???
  5842. Program: AutoBraille is a shareware text-to-braille converter by KANSYS, Inc.
  5843. --------E-2FFB42BX0001-----------------------
  5844. INT 2F PU - Borland C++ DPMILOAD.EXE - INSTALLATION CHECK???
  5845.     AX = FB42h
  5846.     BX = 0001h
  5847. Return: AX = version number??? (AL=major, AH=minor)
  5848.     CX = next-selector increment
  5849. ---BC2.0---
  5850.     ES:BX -> 80-byte buffer for ???
  5851.     DX = DPMI version
  5852. ---BC3.0---
  5853.     BX = ??? (0000h)
  5854.     DX = ???
  5855.     ES:SI -> list of valid selectors ???
  5856. Notes:    The version of DPMILOAD distributed with BC++ v2.0 identifies itself
  5857.       as version 1.000, while the version distributed with BC++ 3.0
  5858.       identifies itself as version 1.0; the former is 10864 bytes, the
  5859.       latter 22180 bytes.  The BC2.0 version is a DPMI loader, while
  5860.       the BC3.0 version also adds a DPMI host and DOS extender
  5861.     the BC++ 2.0 version displays an error message if called with BX
  5862.       values other than 0001h-0008h
  5863. SeeAlso: AX=1687h,AX=FB42h/BX=1001h,AX=FB43h
  5864. --------E-2FFB42BX0002-----------------------
  5865. INT 2F PU - Borland C++ 2.0 DPMILOAD.EXE - ALLOCATE MEMORY
  5866.     AX = FB42h
  5867.     BX = 0002h
  5868.     CX = size in bytes
  5869.     DX = bit flags
  5870.         bit 2: set to allocate DOS memory, clear for DPMI memory
  5871.     SI = selector of descriptor to be modified to access allocated memory
  5872.     DI = selector of a second descriptor to be modified
  5873. Return: AX = ??? or 0000h on error
  5874.     CX:DX = linear base address of DPMI memory block
  5875.     SI:DI = handle for DPMI memory block or FFFFh:FFFFh
  5876.     ???
  5877. Note:    two segment descriptors may be set if a code and an aliased data
  5878.       segment are required; if only one descriptor is needed, SI should
  5879.       equal DI on entry
  5880. BUG:    when allocating DOS memory, the code computes the linear address by
  5881.       multiplying the segment number by 4 rather than shifting by 4
  5882. SeeAlso: AX=FB42h/BX=0003h,AX=FB42h/BX=0008h,INT 31/AX=0501h
  5883. --------E-2FFB42BX0002-----------------------
  5884. INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - ALLOCATE MEMORY
  5885.     AX = FB42h
  5886.     BX = 0002h
  5887.     ES:SI -> memory block info (see below)
  5888. Return: ???
  5889. Note:    The version of DPMILOAD distributed with BC++ v2.0 identifies itself
  5890.       as version 1.000, while the version distributed with BC++ 3.0
  5891.       identifies itself as version 1.0; the former is 10864 bytes, the
  5892.       latter 22180 bytes.
  5893. SeeAlso: AX=FB42h/BX=0003h,AX=FB42h/BX=0008h,INT 31/AX=0501h
  5894.  
  5895. Format of memory block info:
  5896. Offset    Size    Description
  5897.  00h    WORD    flags
  5898.         bit 0: set if data segment rather than code segment
  5899.         bit 1: information valid
  5900.         bit 2: set if DOS memory block rather than DPMI memory block
  5901.         bit 4: ???
  5902.         bit 15: set if no LDT selectors for memory block???
  5903.  02h    DWORD    block size in bytes
  5904. ---DPMI memory block---
  5905.  06h    DWORD    DPMI memory block handle
  5906. ---DOS memory block---
  5907.  06h    WORD    real-mode segment of memory block
  5908.  08h    WORD    selector of memory block
  5909. ---
  5910.  0Ah    DWORD    linear address of memory
  5911.  0Eh    WORD    memory operation error code
  5912.         0008h no more free LDT descriptors
  5913. ---if flags bit 0 clear---
  5914.  10h    WORD    code segment selector for memory block or 0000h or FFFFh
  5915.  12h    WORD    data alias selector for memory block or 0000h or FFFFh
  5916. ---if flags bit 0 set---
  5917.  10h    WORD    data segment selector for memory block or 0000h or FFFFh
  5918.  12h    WORD    unused???
  5919. --------E-2FFB42BX0003-----------------------
  5920. INT 2F PU - Borland C++ DPMILOAD.EXE - GET AVAILABLE MEMORY
  5921.     AX = FB42h
  5922.     BX = 0003h
  5923. Return: DX:AX = size of largest free block in paragraphs
  5924.         0000h:0000h on error (BC3.0 version only)
  5925. Note:    AX and DX are destroyed on error, but no other error indicator is
  5926.       returned, under the BC++ 2.0 version of DPMILOAD
  5927. SeeAlso: AX=FB42h/BX=0002h
  5928. --------E-2FFB42BX0004-----------------------
  5929. INT 2F PU - Borland C++ DPMILOAD.EXE - LOAD PROTECTED-MODE EXECUTABLE???
  5930.     AX = FB42h
  5931.     BX = 0004h
  5932.     DS:DX -> ASCIZ filename of protected-mode executable
  5933. Return: CX = selector of ??? or 0000h
  5934. ---BC3.0---
  5935.     DX = status (0000h,FFF4h,others???) (see below)
  5936. Note:    the filename may also be terminated by a CR rather than a NUL under the
  5937.       BC++ 3.0 version of DPMILOAD
  5938.  
  5939. Values for status:
  5940.  0000h    successful
  5941.  0001h    ??? failure
  5942.  0002h    invalid selector
  5943.  0004h    unknown error
  5944.  0008h    no more LDT descriptors available???
  5945.  FFDEh    unable to set descriptor
  5946.  FFDFh    unable to get segment base address
  5947.  FFE0h    ???
  5948.  FFF2h    invalid parameter value
  5949.  FFF4h    component of filename too long (name not in 8.3 format)
  5950.  FFF5h    pathname too long (>79 chars)
  5951.  FFF6h    ???
  5952.  FFF8h    ???
  5953.  FFF9h    index out of range
  5954.  FFFAh    ???
  5955.  FFFCh    invalid access to code segment???
  5956.  FFFEh    ???
  5957.  FFFFh    general error
  5958. --------E-2FFB42BX0005-----------------------
  5959. INT 2F PU - Borland C++ DPMILOAD.EXE - GET ADDRESS OF ??? BY NAME
  5960.     AX = FB42h
  5961.     BX = 0005h
  5962.     CX = selector of DPMILOAD data (see below)
  5963.     DS:DX -> ASCIZ or CR-terminated name of ??? (case ignored)
  5964. Return: DX = status (see AX=FB42h/BX=0004h)
  5965.         0000h successful
  5966.         AX:BX -> ??? FAR function (called with two words on top of stk)
  5967.         else
  5968.         BX destroyed
  5969. SeeAlso: AX=FB42h/BX=0006h,AX=FB42h/BX=000Eh
  5970.  
  5971. Format of DPMILOAD data:
  5972. Offset    Size    Description
  5973.  00h 12 BYTEs    ???
  5974.  0Ch    WORD    ??? bit flags
  5975.  0Eh 14 BYTEs    ???
  5976.  1Ch    WORD    number of memory control records
  5977.  1Eh 25 BYTEs    ???
  5978.  37h    BYTE    ??? bit flags
  5979.         bit 4: data valid???
  5980.  38h  4 BYTEs    ???
  5981.  3Ch    WORD    ???
  5982.  3Eh 12 BYTEs    ???
  5983.  46h    BYTE    ??? counter
  5984.  47h    BYTE    ???
  5985.  48h    BYTE    ???
  5986.  49h    BYTE    ???
  5987.  4Ah    WORD    ???
  5988.  4Ch  2 BYTEs    ???
  5989.  4Eh    WORD    offset of array of 64-byte memory control records
  5990.  52h    WORD    offset of name list (see below)
  5991.  54h  4 BYTEs    ???
  5992.  58h    WORD    offset of array of 6-byte objects
  5993.  5Ah  8 BYTEs    ???
  5994.  62h  9 BYTEs    ASCIZ name for ???
  5995.  6Bh  9 BYTEs    ASCIZ name for ???
  5996.     ???
  5997.  
  5998. Format of name list entry [array]:
  5999. Offset    Size    Description
  6000.  00h    BYTE    length of name (00h if end of array)
  6001.  01h  N BYTEs    name
  6002.  N+1    WORD    1-based index into array of unknown 6-byte objects
  6003.  
  6004. Format of 6-byte objects:
  6005. Offset    Size    Description
  6006.  00h    BYTE    ???
  6007.  01h    BYTE    ???
  6008.  02h    BYTE    ???
  6009.  03h    BYTE    1-based index of memory control record
  6010.  04h    WORD    ???
  6011.  
  6012. Format of memory control record:
  6013. Offset    Size    Description
  6014.  00h 20 BYTEs    memory block info (see AX=FB42h/BX=0002h)
  6015.  14h  6 BYTEs    ???
  6016.  1Ah    BYTE    ???
  6017.  1Bh  2 BYTEs    ???
  6018.  1Dh    BYTE    ??? bit flags
  6019.  1Eh 14 BYTEs    ???
  6020.  2Ch    DWORD    pointer to ??? memory control record or 0000h:0000h
  6021.  30h    DWORD    pointer to ??? memory control record or 0000h:0000h
  6022.  34h    DWORD    pointer to next??? memory control record or 0000h:0000h
  6023.  38h    DWORD    pointer to prev??? memory control record or 0000h:0000h
  6024.  3Ch  4 BYTEs    ???
  6025. Note:    the pointers at offsets 2Ch and 30h form a doubly-linked list, as do
  6026.       the pointers at offsets 34h and 38h
  6027. --------E-2FFB42BX0006-----------------------
  6028. INT 2F PU - Borland C++ DPMILOAD.EXE - GET ADDRESS OF ??? BY NUMBER
  6029.     AX = FB42h
  6030.     BX = 0006h
  6031.     CX = selector of DPMILOAD data (see AX=FB42h/BX=0005h)
  6032.     DX = 1-based index into array of ??? 6-byte objects
  6033. Return: DX = status (see AX=FB42h/BX=0004h)
  6034.         0000h successful
  6035.         AX:BX -> ??? FAR function (called with two words on top of stk)
  6036.         else
  6037.         BX destroyed
  6038. SeeAlso: AX=FB42h/BX=0005h,AX=FB42h/BX=000Eh
  6039. --------E-2FFB42BX0007-----------------------
  6040. INT 2F PU - Borland C++ 2.0 DPMILOAD.EXE - ???
  6041.     AX = FB42h
  6042.     BX = 0007h
  6043.     CX = selector of ???
  6044. Return: ???
  6045. Note:    The version of DPMILOAD distributed with BC++ v2.0 identifies itself
  6046.       as version 1.000, while the version distributed with BC++ 3.0
  6047.       identifies itself as version 1.0; the former is 10864 bytes, the
  6048.       latter 22180 bytes.
  6049. --------E-2FFB42BX0007-----------------------
  6050. INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - ???
  6051.     AX = FB42h
  6052.     BX = 0007h
  6053.     CX = selector of DPMILOAD data (see AX=FB42h/BX=0005h)
  6054.     ???
  6055. Return: DX = status (see AX=FB42h/BX=0004h)
  6056.         0000h successful
  6057.         AX = ???
  6058. --------E-2FFB42BX0008-----------------------
  6059. INT 2F PU - Borland C++ 2.0 DPMILOAD.EXE - FREE MEMORY BLOCK
  6060.     AX = FB42h
  6061.     BX = 0008h
  6062.     CX = bit flags
  6063.         bit 2: set if DPMI memory, clear if DOS memory
  6064.     DX = selector of DOS memory block
  6065.     SI:DI = handle of DPMI memory block
  6066. Return: DX = 0000h on error, unchanged if succcessful
  6067. Note:    The version of DPMILOAD distributed with BC++ v2.0 identifies itself
  6068.       as version 1.000, while the version distributed with BC++ 3.0
  6069.       identifies itself as version 1.0; the former is 10864 bytes, the
  6070.       latter 22180 bytes.
  6071. SeeAlso: AX=FB42h/BX=0002h
  6072. --------E-2FFB42BX0008-----------------------
  6073. INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - FREE MEMORY BLOCK
  6074.     AX = FB42h
  6075.     BX = 0008h
  6076.     ES:SI -> memory block info (see AX=FB42h/BX=0002h"3.0")
  6077. Return: ???
  6078. SeeAlso: AX=FB42h/BX=0009h
  6079. --------E-2FFB42BX0009-----------------------
  6080. INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - RESIZE MEMORY BLOCK
  6081.     AX = FB42h
  6082.     BX = 0009h
  6083.     ES:SI -> memory block info (see AX=FB42h/BX=0002h"3.0")
  6084.     ???
  6085. Return: ???
  6086. SeeAlso: AX=FB42h/BX=0008h"3.0"
  6087. --------E-2FFB42BX000A-----------------------
  6088. INT 2F RU - Borland C++ 3.0 DPMILOAD.EXE - INIT DPMI HOST AND SPAWN SUBSHELL
  6089.     AX = FB42h
  6090.     BX = 000Ah
  6091.     CX = 0001h
  6092.     DX = ???
  6093.     SI = ???
  6094. Return: after user exits subshell
  6095. Notes:    this call is used by DPMIRES; unlike most of the DPMILOAD calls, this
  6096.       function is not available in protected mode.
  6097.     the BC2.0 version of DPMILOAD is purely a DPMI loader, while the BC3.0
  6098.       version also adds a DPMI host and DOS extender.
  6099. SeeAlso: AX=FB42h/BX=0004h,AX=FB42h/BX=0015h
  6100. --------E-2FFB42BX000B-----------------------
  6101. INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - UNUSED
  6102.     AX = FB42h
  6103.     BX = 000Bh
  6104. --------E-2FFB42BX000C-----------------------
  6105. INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - FREE DESCRIPTORS FOR MEMORY BLOCK???
  6106.     AX = FB42h
  6107.     BX = 000Ch ???
  6108.     ES:SI -> memory block info ??? (see AX=FB42h/BX=0002h"3.0")
  6109. Return: DX = status???
  6110. SeeAlso: AX=FB42h/BX=000Fh
  6111. --------E-2FFB42BX000D-----------------------
  6112. INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - SIMULATE REAL MODE INTERRUPT
  6113.     AX = FB42h
  6114.     BX = 000Dh
  6115.     CX = number of words to copy from protected-mode to real mode stack
  6116.     DL = interrupt number
  6117.     DH = flags
  6118.         bit 0: reset the interrupt controller and A20 line
  6119.     ES:DI -> real-mode call structure (see INT 31/AX=0300h)
  6120. Return: CX = status
  6121.         0000h successful
  6122.         0001h failed
  6123. SeeAlso: INT 31/AX=0300h
  6124. --------E-2FFB42BX000E-----------------------
  6125. INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - GET ADDRESS OF ???
  6126.     AX = FB42h
  6127.     BX = 000Eh
  6128.     DS:DX -> ASCIZ or CR-terminated name of ???
  6129. Return: CX = selector of DPMILOAD data (see AX=FB42h/BX=0005h) corresponding to
  6130.         name, 0000h on error
  6131. SeeAlso: AX=FB42h/BX=0006h,AX=FB42h/BX=001Fh
  6132. --------E-2FFB42BX000F-----------------------
  6133. INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - REALLOCATE LDT DESCRPS TO MEMBLK???
  6134.     AX = FB42h
  6135.     BX = 000Fh
  6136.     ES:SI -> memory block info (see AX=FB42h/BX=0002h"3.0")
  6137. Return: ???
  6138. SeeAlso: AX=FB42h/BX=000Ch
  6139. --------E-2FFB42BX0010-----------------------
  6140. INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - CONVERT SEGMENT TO SELECTOR
  6141.     AX = FB42h
  6142.     BX = 0010h
  6143.     DX = segment number
  6144. Return: CX = status (see also AX=FB42h/BX=0004h)
  6145.         0000h successful
  6146.         DX = selector number for descriptor
  6147.         0008h failed
  6148. SeeAlso: AX=FB42h/BX=0023h
  6149. --------E-2FFB42BX0011-----------------------
  6150. INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - ???
  6151.     AX = FB42h
  6152.     BX = 0011h
  6153.     CX = selector of DPMILOAD data (see AX=FB42h/BX=0005h)
  6154.     ???
  6155. Return: DX = status (see also AX=FB42h/BX=0004h)
  6156.         0000h successful
  6157.         AX:BX -> ??? name
  6158.         0002h invalid selector
  6159.         FFFEh ??? error
  6160. --------E-2FFB42BX0012-----------------------
  6161. INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - ???
  6162.     AX = FB42h
  6163.     BX = 0012h
  6164.     CX = selector for ???
  6165. Return: CX = selector for ???
  6166. --------E-2FFB42BX0013-----------------------
  6167. INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - ???
  6168.     AX = FB42h
  6169.     BX = 0013h
  6170.     CX = selector of DPMILOAD data (see AX=FB42h/BX=0005h)
  6171.     DX = 1-based index of ???
  6172. Return: CX = status (see also AX=FB42h/BX=0004h)
  6173.         0000h successful
  6174.         BX = ??? or 0000h
  6175.         0002h invalid selector
  6176.         FFF9h ??? error
  6177. --------E-2FFB42BX0014-----------------------
  6178. INT 2F RU - Borland C++ 3.0 DPMILOAD.EXE - ???
  6179.     AX = FB42h
  6180.     BX = 0014h ???
  6181.         CX = 0001h
  6182.         Return: BX = 0000h
  6183. Note:    unlike most of the DPMILOAD functions, this call is available only in
  6184.       real or V86 mode
  6185. SeeAlso: AX=FB42h/BX=000Ah
  6186. --------E-2FFB42BX0015-----------------------
  6187. INT 2F RU - Borland C++ 3.0 DPMILOAD.EXE - UNINSTALL
  6188.     AX = FB42h
  6189.     BX = 0015h
  6190.     CX = 0001h
  6191. Return: ???
  6192. Note:    unlike most of the DPMILOAD functions, this call is available only in
  6193.       real or V86 mode
  6194. SeeAlso: AX=FB42h/BX=000Ah
  6195. --------E-2FFB42BX0016-----------------------
  6196. INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - GET ???
  6197.     AX = FB42h
  6198.     BX = 0016h
  6199.     CX = selector of DPMILOAD data (see AX=FB42h/BX=0005h)
  6200. Return: DX = status (see also AX=FB42h/BX=0004h)
  6201.         0000h successful
  6202.         CX = ???
  6203. --------E-2FFB42BX0017-----------------------
  6204. INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - ???
  6205.     AX = FB42h
  6206.     BX = 0017h
  6207.     CX = ???
  6208.     DX = ???
  6209.     ???
  6210. Return: DX = status (0000h,0001h) (see below)
  6211. --------E-2FFB42BX0018-----------------------
  6212. INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - SET ???
  6213.     AX = FB42h
  6214.     BX = 0018h
  6215.     CX = ???
  6216. --------E-2FFB42BX0019-----------------------
  6217. INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - ???
  6218.     AX = FB42h
  6219.     BX = 0019h
  6220.     CX = selector for ???
  6221.     ???
  6222. Return: DX = status (see also AX=FB42h/BX=0004h)
  6223.         0000h successful
  6224.         CX = selector for ???
  6225. --------E-2FFB42BX001A-----------------------
  6226. INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - ???
  6227.     AX = FB42h
  6228.     BX = 001Ah
  6229.     CX = selector for ???
  6230.     ???
  6231. Return: DX = status (see also AX=FB42h/BX=0004h)
  6232.         0000h successful
  6233.         0004h failed
  6234.     CX:BX -> ???
  6235. --------E-2FFB42BX001B-----------------------
  6236. INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - ???
  6237.     AX = FB42h
  6238.     BX = 001Bh
  6239.     CX = selector of DPMILOAD data (see AX=FB42h/BX=0005h)
  6240.     DX = offset of ???
  6241. Return: DX = status (see also AX=FB42h/BX=0004h)
  6242.         0000h successful
  6243.         BX = selector for ???
  6244.         CX = selector for ???
  6245.         0002h invalid selector
  6246. --------E-2FFB42BX001C-----------------------
  6247. INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - ???
  6248.     AX = FB42h
  6249.     BX = 001Ch
  6250.     ES = selector for DPMILOAD data (see AX=FB42h/BX=0005h)
  6251.     CX = 1-based index of ???
  6252.     DX = 1-based index of ???
  6253. Return: DX = status (0000h,0002h,FFF9h) (see AX=FB42h/BX=0004h)
  6254. --------E-2FFB42BX001D-----------------------
  6255. INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - GET ???
  6256.     AX = FB42h
  6257.     BX = 001Dh
  6258. Return: CX:DX = ???
  6259. --------E-2FFB42BX001E-----------------------
  6260. INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - ???
  6261.     AX = FB42h
  6262.     BX = 001Eh
  6263.     CX = ???
  6264.     ???
  6265. Return: DX = status (see also AX=FB42h/BX=0004h)
  6266.         0000h successful
  6267.         FFF7h ??? error
  6268.     CX:BX -> ???
  6269. --------E-2FFB42BX001F-----------------------
  6270. INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - GET ADDRESS OF ???
  6271.     AX = FB42h
  6272.     BX = 001Fh
  6273.     DS:DX -> 8-character name of ???
  6274.     ???
  6275. Return: CX = selector of DPMILOAD data (see AX=FB42h/BX=0005h) for ???
  6276.         0000h on error
  6277. SeeAlso: AX=FB42h/BX=000Eh
  6278. --------E-2FFB42BX0020-----------------------
  6279. INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - NULL FUNCTION???
  6280.     AX = FB42h
  6281.     BX = 0020h
  6282. Return: DX = ??? (always 0000h)
  6283. --------E-2FFB42BX0021-----------------------
  6284. INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - GET PROCESSOR EXCEPTION HANDLER VECT
  6285.     AX = FB42h
  6286.     BX = 0021h
  6287.     CL = exception number (00h-1Fh)
  6288. Return: DX = status (see also AX=FB42h/BX=0004h)
  6289.         0000h successful
  6290.         AX:BX = selector:offset of handler
  6291.         FFF2h unable to get exception handler vector
  6292. SeeAlso: AX=FB42h/BX=0022h,AX=FB42h/BX=0024h,INT 31/AX=0202h
  6293. --------E-2FFB42BX0022-----------------------
  6294. INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - SET PROCESSOR EXCEPTION HANDLER VECT
  6295.     AX = FB42h
  6296.     BX = 0022h
  6297.     CL = exception number (00h-1Fh)
  6298.     SI:DX = selector:offset of new handler
  6299. Return: DX = status (0000h,0004h,FFF2h) (see AX=FB42h/BX=0004h)
  6300. SeeAlso: AX=FB42h/BX=0021h,AX=FB42h/BX=0025h,INT 31/AX=0203h
  6301. --------E-2FFB42BX0023-----------------------
  6302. INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - CONVERT SELECTOR TO SEGMENT NUMBER
  6303.     AX = FB42h
  6304.     BX = 0023h
  6305.     CX = selector
  6306. Return: DX = status (see also AX=FB42h/BX=0004h)
  6307.         0000h successful
  6308.         CX = real-mode segment number
  6309.         FFF2h descriptor has invalid base address for real-mode segment
  6310. SeeAlso: AX=FB42h/BX=0010h
  6311. --------E-2FFB42BX0024-----------------------
  6312. INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - GET PROTECTED-MODE INTERRUPT VECTOR
  6313.     AX = FB42h
  6314.     BX = 0024h
  6315.     CL = interrupt number
  6316. Return: DX = status (0000h) (see also AX=FB42h/BX=0004h)
  6317.     AX:BX = selector:offset of handler
  6318. SeeAlso: AX=FB42h/BX=0025h,INT 31/AX=0204h
  6319. --------E-2FFB42BX0025-----------------------
  6320. INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - SET PROTECTED-MODE INTERRUPT VECTOR
  6321.     AX = FB42h
  6322.     BX = 0025h
  6323.     CL = interrupt number
  6324.     SI:DX = selector:offset of new handler
  6325. Return: DX = status (0000h,0004h,FFF2h) (see AX=FB42h/BX=0004h)
  6326. SeeAlso: AX=FB42h/BX=0024h,INT 31/AX=0205h
  6327. --------E-2FFB42BX0026-----------------------
  6328. INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - ???
  6329.     AX = FB42h
  6330.     BX = 0026h
  6331.     CX = selector of DPMILOAD data (see AX=FB42h/BX=0005h)
  6332.     DX = 1-based index of ???
  6333.     ???
  6334. Return: DX = status (0000h,0002h,FFF9h) (see AX=FB42h/BX=0004h)
  6335.         0000h successful
  6336.         BX = offset of ??? within data structure
  6337. --------E-2FFB42BX0027-----------------------
  6338. INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - GET ???
  6339.     AX = FB42h
  6340.     BX = 0027h
  6341.     CX = selector of DPMILOAD data (see AX=FB42h/BX=0005h)
  6342.     DX = offset of ???
  6343. Return: DX = status (see also AX=FB42h/BX=0004h)
  6344.         0000h successful
  6345.         BX = ???
  6346. --------E-2FFB42BX0080-----------------------
  6347. INT 2F U - ??? - CALLED BY Borland C++ 3.0 DPMILOAD.EXE
  6348.     AX = FB42h
  6349.     BX = 0080h
  6350.     ???
  6351. Return: AX = ???
  6352.     ???
  6353. --------E-2FFB42BX0081-----------------------
  6354. INT 2F U - ??? - CALLED BY Borland C++ 3.0 DPMILOAD.EXE
  6355.     AX = FB42h
  6356.     BX = 0081h
  6357.     ???
  6358. Return: AX = ???
  6359.     ???
  6360. --------E-2FFB42BX1001-----------------------
  6361. INT 2F U - Borland RTM.EXE 1.0 - INSTALLATION CHECK???
  6362.     AX = FB42h
  6363.     BX = 1001h
  6364. Return: BX = 0000h
  6365. SeeAlso: AX=FB42h/BX=0001h,AX=FB42h/BX=1002h,AX=FB42h/BX=1003h
  6366. --------E-2FFB42BX1002-----------------------
  6367. INT 2F U - Borland RTM.EXE 1.0 - ???
  6368.     AX = FB42h
  6369.     BX = 1002h
  6370.     ???
  6371. Return: ???
  6372. SeeAlso: AX=FB42h/BX=1001h
  6373. --------E-2FFB42BX1003-----------------------
  6374. INT 2F U - Borland RTM.EXE 1.0 - ???
  6375.     AX = FB42h
  6376.     BX = 1003h
  6377.     ???
  6378. Return: ???
  6379. SeeAlso: AX=FB42h/BX=1001h
  6380. --------E-2FFB43-----------------------------
  6381. INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - NULL FUNCTION
  6382.     AX = FB43h
  6383.     BX = subfunction (at least 0000h-000Eh)
  6384. Notes:    this function is only present in protected mode; it does nothing but
  6385.       an immediate IRET
  6386.     DPMILOAD.EXE itself calls various subfunctions:
  6387.         subfunction 0004h is called with CX=selector of ???, DI=selector
  6388.         of DPMILOAD data
  6389.         subfunction 0008h is called with CX=selector of DPMILOAD data
  6390. SeeAlso: AX=FB42h/BX=0001h
  6391. --------G-2FFB43BX0100-----------------------
  6392. INT 2F PU - Borland TDX - INSTALLATION CHECK
  6393.     AX = FB43h
  6394.     BX = 0100h
  6395. Return: BX = FB43h if loaded
  6396. Program: TDX is Borland's Turbo Debugger variant for DPMI programs
  6397. Note:    Borland Pascal 7 DPMI programs use this call to check whether they
  6398.       should install their own stack and general protection exception
  6399.       handlers, or allow TDX to handle those exceptions
  6400. --------a-2FFB64-----------------------------
  6401. INT 2F U - AutoBraille v1.1A - GET ???
  6402.     AX = FB64h
  6403. Return: AX = ??? (0006h seen)
  6404. Program: AutoBraille is a shareware text-to-braille converter by KANSYS, Inc.
  6405. --------E-2FFBA1BX0081-----------------------
  6406. INT 2F U - TKERNEL (Borland DOS extender) - INSTALLATION CHECK
  6407.     AX = FBA1h
  6408.     BX = 0081h
  6409.     ES:DI -> 16-byte buffer
  6410. Return: if installed, first four bytes of ES:DI buffer are "IABH"
  6411. Program: TKERNEL is a licensed version of AI Architects/Ergo's OS/x86.
  6412. Note:    TKERNEL was present only in Borland C++ 2.0; with version 3.0, the DOS
  6413.       extender was moved into DPMILOAD.
  6414. SeeAlso: AH=A1h,AX=F100h,AX=FBA1h/BX=0082h,AX=FBA1h/BX=0084h,INT 15/AX=BF02h
  6415. SeeAlso: INT 21/AX=4403h"TKERNEL"
  6416. --------E-2FFBA1BX0082-----------------------
  6417. INT 2F U - TKERNEL (Borland DOS extender) - GET ENTRY POINT
  6418.     AX = FBA1h
  6419.     BX = 0082h
  6420.     ES:DI -> response buffer (see below)
  6421. Return: ES:DI buffer filled
  6422. SeeAlso: AX=FBA1h/BX=0081h,AX=FBA1h/BX=0084h
  6423.  
  6424. Format of response buffer:
  6425. Offset    Size    Description
  6426.  00h  4 BYTEs    signature "IABH"
  6427.  04h    DWORD    pointer to FAR extender entry point
  6428.  
  6429. Call entry point with:
  6430.     AX = function number
  6431.         0000h initialize???
  6432.         STACK:    WORD  ???
  6433.         Return: AX = status???
  6434.             STACK unchanged
  6435.         0001h get version???
  6436.         Return: AX = 0200h for v2.0.34
  6437.         0002h get ???
  6438.         Return: AX = ??? (011Eh or 0182h seen)
  6439.         0003h load protected-mode executable
  6440.         STACK:    DWORD -> ASCIZ filename of executable
  6441.             DWORD    ???
  6442.             DWORD -> program arguments (counted string plus CR)
  6443.             DWORD -> environment for protected-mode executable
  6444.                 (terminated with two consecutive NULs)
  6445.             DWORD -> WORD buffer for ???
  6446.         Return: AX = status???
  6447.             STACK unchanged
  6448.         0004h get descriptor
  6449.         STACK:    WORD    selector for which to get descriptor
  6450.             WORD    segment number (when running in real mode)
  6451.             DWORD -> buffer for descriptor
  6452.         Return: CF clear if successful
  6453.                 buffer filled
  6454.             CF set on error
  6455.                 AX destroyed???
  6456.             STACK unchanged
  6457.         0005h ???
  6458.         STACK:    WORD    selector for ???
  6459.             WORD    subfunction number???
  6460.                 0000h run previously-loaded program???
  6461.                 0001h ??? (similar to 0000h)
  6462.                 0002h
  6463.                 0003h
  6464.                 0005h ??? (similar to 0000h and 0001h)
  6465.         Return: AX = status???
  6466.             STACK unchanged
  6467.         0006h ???
  6468.         STACK:    WORD ???
  6469.             DWORD -> WORD (call) max iterations of ???
  6470.                       (return) remaining iterations
  6471.         Return: AX = ???
  6472.             STACK unchanged
  6473.         0007h unused
  6474.         Return: AX = 0001h
  6475.         0008h unused
  6476.         Return: AX = 0001h
  6477.         0009h copy protected-mode memory into conventional memory
  6478.         STACK:    WORD    selector for source segment
  6479.             WORD    segment of source if in real mode???
  6480.             DWORD    offset of source
  6481.             WORD    number of bytes to copy
  6482.             DWORD -> low-memory destination
  6483.         Return: AX = status
  6484.             STACK unchanged
  6485.         000Ah copy conventional memory into protected-mode memory
  6486.         STACK:    WORD    selector for destination segment
  6487.             WORD    segment of destination if in real mode???
  6488.             DWORD    offset of destination
  6489.             WORD    number of bytes to copy
  6490.             DWORD -> low-memory source
  6491.         Return: AX = status
  6492.             STACK unchanged
  6493.         000Bh get ??? pointers
  6494.         STACK:    WORD desired pointer
  6495.                 0000h get ???
  6496.                 0002h get protected-mode CR3
  6497.                 0003h get 4K page table buffer pointer
  6498.                 else Return: DX:AX = FFFFh:FFFFh
  6499.         Return: DX:AX = requested pointer
  6500.             STACK unchanged
  6501.         000Ch set ??? pointers
  6502.         STACK:    WORD desired pointer
  6503.                 0000h set ???
  6504.                 0002h set protected-mode CR3
  6505.                 0003h set 4K page table buffer pointer
  6506.                 else ignore
  6507.             DWORD new value for pointer
  6508.         Return: STACK unchanged
  6509.         000Dh get ??? pointers
  6510.         STACK:    WORD desired pointer
  6511.                 0000h get ???
  6512.                 0001h get ???
  6513.                 0002h get ???
  6514.                 0003h get ???
  6515.                 0004h get ???
  6516.                 0005h get ???
  6517.                 0006h get ???
  6518.                 0007h get ???
  6519.                 else Return: DX:AX = FFFFh:FFFFh
  6520.         Return: DX:AX = desired pointer
  6521.             STACK unchanged
  6522.         000Eh set ??? pointer
  6523.         STACK:    WORD desired pointer
  6524.                 0000h set ???
  6525.                 0001h set ???
  6526.                 0002h set ???
  6527.                 0003h set ???
  6528.                 0004h set ???
  6529.                 0005h set ???
  6530.                 0006h set ???
  6531.                 0007h set ???
  6532.                 else Return: DX:AX = FFFFh:FFFFh
  6533.         Return: STACK unchanged
  6534.         000Fh get ???
  6535.         Return: AX = ??? (seen 0008h)
  6536.         0010h get ???
  6537.         Return: AX = ???
  6538.         0011h determine whether selector is valid
  6539.         STACK:    WORD    possible selector
  6540.         Return: AX = selector or 0000h if invalid
  6541.             STACK unchanged
  6542.         0012h get physical address
  6543.         STACK:    WORD    selector for desired segment
  6544.             WORD    segment number if in real mode
  6545.             DWORD    offset within segment
  6546.         Return: DX:AX = 32-bit physical address or 00000000h on error
  6547.             BX destroyed
  6548.             STACK unchanged
  6549.         0013h ???
  6550.         Note:    normally jumps to code for function 0012h
  6551.         0014h copy protected-mode memory to conventional memory, with ???
  6552.         STACK:    WORD    selector for source segment
  6553.             WORD    segment of source if in real mode???
  6554.             DWORD    offset of source
  6555.             WORD    number of bytes to copy
  6556.             DWORD -> low-memory destination
  6557.         Return: AX = status???
  6558.             STACK unchanged
  6559.         0015h copy conventional memory to protected-mode memory, with ???
  6560.         STACK:    WORD    selector for destination segment
  6561.             WORD    segment of destination if in real mode???
  6562.             DWORD    offset of destination
  6563.             WORD    number of bytes to copy
  6564.             DWORD -> low-memory source
  6565.         Return: AX = status???
  6566.             STACK unchanged
  6567.         0016h set ??? pointer
  6568.         STACK:    WORD    unused
  6569.             DWORD -> ??? or 0000h:0000h
  6570.         Return: AX = 0000h
  6571.             STACK unchanged
  6572.         0017h allocate real-mode procedure???
  6573.         STACK:    DWORD    ASCIZ name of procedure
  6574.             DWORD ???
  6575.             DWORD    address of subroutine to invoke
  6576.         Return: AX = status
  6577.                 0032h procedure by that name exists
  6578.                 0033h no more real-mode procedures available
  6579.             DX destroyed
  6580.             STACK unchanged
  6581.         0018h unused
  6582.         Return: AX = 0001h
  6583.         0019h get parameter block
  6584.         Return: DX:AX -> parameter block (format unknown at this time,
  6585.                 but 92h bytes)
  6586.                 (preceded by signature "!!PARAM-BLOCK!!")
  6587.         001Ah get ???
  6588.         Return: AX = ??? (0148h seen)
  6589.         001Bh free real-mode procedure???
  6590.         STACK:    DWORD -> ASCIZ name of procedure
  6591.         Return: ???
  6592.             STACK unchanged
  6593.         001Ch check whether packets from protected mode task pending
  6594.         Return: AX = 0001h if packets pending, 0000h if not
  6595.         001Dh set ???
  6596.         STACK:    DWORD ??? or 0000h:0000h
  6597.         Return: AX,BX destroyed
  6598.             STACK unchanged
  6599.         001Eh ???
  6600.         STACK:    WORD ??? (high byte ignored)
  6601.             DWORD -> data structure (see below)
  6602.         Return: AX,BX,CX,DX destroyed
  6603.             data structure updated
  6604.             STACK unchanged
  6605.         Format of data structure
  6606.         Offset    Size    Description
  6607.          00h  2 BYTEs    unused
  6608.          02h    WORD    ???
  6609.          04h    WORD    ???
  6610.          06h    WORD    ???
  6611.          08h  2 BYTEs    unused
  6612.          0Ah    WORD    ???
  6613.          0Ch    WORD    (call) ???
  6614.                 (return) offset of this data structure (BUG?)
  6615.         001Fh set ???
  6616.         STACK:    WORD ??? (set to 0001h if zero)
  6617.         Return: AX destroyed
  6618.             STACK unchanged
  6619.         0020h ???
  6620.         STACK:    DWORD -> ??? (8 bytes of data)
  6621.         Return: AX = ???
  6622.             STACK unchanged
  6623.         0021h ???
  6624.         STACK:    DWORD -> ??? (8 bytes of data)
  6625.             WORD    ???
  6626.             WORD    ???
  6627.         Return: AX = ???
  6628.             STACK unchanged
  6629.         0022h ???
  6630.         STACK:    DWORD -> ??? (8 bytes of data)
  6631.             DWORD -> 4-byte buffer for results
  6632.         Return: AX = ???
  6633.             STACK unchanged
  6634.         0023h ???
  6635.         STACK:    DWORD -> ??? (8 bytes of data)
  6636.         Return: AX = ???
  6637.             STACK unchanged
  6638.         0024h set ???
  6639.         STACK:    WORD ???
  6640.         Return: AX destroyed
  6641.             STACK unchanged
  6642.         0025h get ???
  6643.         Return: AX = ??? (value set with func 0024h)
  6644.         0026h BUG: jumps to hyperspace due to fencepost error
  6645.         FFFFh set DOS memory management functions
  6646.         BX:SI -> FAR routine for allocating DOS memory
  6647.             (called with AH=48h,BX=number of paragraphs to alloc;
  6648.              returns CF clear, AX=segment of allocated memory, or
  6649.                  CF set on error)
  6650.         CX:DI -> FAR routine for freeing DOS memory
  6651.             (called with AH=49h,ES=segment of block to free;
  6652.              returns CF set on error,AX=error code)
  6653.         Note: each of these pointers normally points at INT 21/RETF
  6654.         other Return: AX = 0001h
  6655. Note:    BX may be destroyed by any of the API calls
  6656. --------E-2FFBA1BX0084-----------------------
  6657. INT 2F U - TKERNEL (Borland DOS extender) - UNINSTALL
  6658.     AX = FBA1h
  6659.     BX = 0084h
  6660.     ES:DI -> response buffer (see below)
  6661. Return: ES:DI buffer filled
  6662. SeeAlso: AX=FBA1h/BX=0081h,AX=FBA1h/BX=0084h
  6663.  
  6664. Format of response buffer:
  6665. Offset    Size    Description
  6666.  00h  4 BYTEs    signature "IABH"
  6667.  04h    WORD    success indicator
  6668.         0001h failed (INT 2F hooked by another program)
  6669.         unchanged if successful
  6670.  06h    WORD    segment of ???
  6671.  08h    WORD    segment of ??? memory block to free if nonzero
  6672.  0Ah    WORD    segment of ??? memory block to free if nonzero
  6673. --------s-2FFBFBES0000-----------------------
  6674. INT 2F U - SoundBlaster speech driver - INSTALLATION CHECK
  6675.     AX = FBFBh
  6676.     ES = 0000h
  6677. Return: ES nonzero if installed
  6678.         ES:BX -> entry point data structure (see below)
  6679. SeeAlso: INT 80/BX=0000h,INT F3"SoundBlaster"
  6680.  
  6681. Format of entry point data structure:
  6682. Offset    Size    Description
  6683.  00h  3 BYTEs    signature "FB "
  6684.  03h    BYTE    driver major version number???
  6685.  04h    DWORD    speech driver entry point
  6686.  08h 24 BYTEs    ???
  6687.  20h  ? BYTEs    data buffer for calling speech driver
  6688.  
  6689. Call driver entry point with:
  6690.     AL = function
  6691.         07h speak a string
  6692.         data buffer (see above) contains:
  6693.             BYTE  length of string
  6694.               N BYTEs string to speak
  6695. --------N-2FFE00BX4454-----------------------
  6696. INT 2F - PC-NFS ??? - INSTALLATION CHECK
  6697.     AX = FE00h
  6698.     BX = 4454h ("DT")
  6699.     CX = 4B52h ("KR")
  6700.     DX = 4E4Dh ("NM")
  6701. Return: AL = FFh if installed
  6702.        BX = 524Eh ("RM")
  6703.        CX = 4D44h ("MD")
  6704.        DX = 544Bh ("TK")
  6705. Note:    DV/X 1.10 DVPCNFS.DVR searches AH=FEh,FFh,C0h-FDh for a valid response
  6706. SeeAlso: AX=FE08h
  6707. --------N-2FFE00BX4454-----------------------
  6708. INT 2F - PC-NFS ??? - INSTALLATION CHECK
  6709.     AX = FE00h
  6710.     BX = 4454h ("DT")
  6711.     CX = 4B52h ("KR")
  6712.     DX = 544Dh ("TM")
  6713. Return: AL = FFh if installed
  6714.        BX = 5254h ("RT")
  6715.        CX = 4D44h ("MD")
  6716.        DX = 544Bh ("TK")
  6717. Note:    DV/X 1.10 DVPCNFS.DVR searches AH=FEh,FFh,C0h-FDh for a valid response
  6718. SeeAlso: AX=FE08h
  6719. --------U-2FFE00DI4E55-----------------------
  6720. INT 2F U - NORTON UTILITIES 5.0+ TSRs - INSTALLATION CHECK/STATUS REPORT
  6721.     AX = FE00h
  6722.     DI = 4E55h ("NU")
  6723.     SI = TSR identifier
  6724.         4346h ("CF") NCACHE-F (v5) / NCACHE (v6.0+)
  6725.         4353h ("CS") NCACHE-S (v5 only)
  6726.         4443h ("DC") DISKREET
  6727.         444Dh ("DM") DISKMON
  6728.         4653h ("FS") FILESAVE (v5) / EP (v6.0+)
  6729. Return: SI = TSR reply
  6730.         lowercase version of SI on entry (i.e. SI OR 2020h)
  6731.     AH = status
  6732.         00h installed but disabled internally
  6733.         01h installed and enabled
  6734.     AL = status
  6735.         00h NCACHE-x or DISKREET installed
  6736.         01h FILESAVE / EP / DISKMON v6 installed
  6737.         45h DISKMON v5 installed
  6738.     BX = length of *.INI file (DISKMON and FILESAVE/EP only) (see below)
  6739.     CX = segment of resident portion
  6740.         FFFFh if completely loaded high (NCACHE)
  6741. ---FILESAVE/EP---
  6742.     DL = ??? (apparently always 00h)
  6743. ---DISKMON---
  6744.     DX = ??? (apparently always 1AE6h [v5] / 1B86h [v6])
  6745. Note:    the value returned in CX is incorrect for NCACHE 6.00
  6746. SeeAlso: AX=FE01h,AX=FE02h,AX=FE03h,AX=FE04h,AX=FE05h
  6747.  
  6748. Format of DISKMON.INI file:
  6749. Offset    Size    Description
  6750. -6Ch 108 BYTEs    (in memory copy only)
  6751.         list of filenames which are always protected:
  6752.           IBMBIO.COM/IBMDOS.COM, IO.SYS/MSDOS.SYS, TBIOS.SYS/TDOS.SYS,
  6753.           MIO.SYS/IO.BIN, COMMAND.COM
  6754.  00h    BYTE    ??? always 01h
  6755.  01h    BYTE    disk light (00h off, 01h on)
  6756.  02h    BYTE    disk protection (00h off, 01h on)
  6757.  03h    BYTE    protected areas
  6758.         01h system area
  6759.         02h files
  6760.         03h system area and files
  6761.         04h entire disk
  6762.  04h    BYTE    floppy access (00h not allowed, 01h allowed)
  6763.  05h 27 BYTEs    filename extension list (9 entries)
  6764.         (lowercase, blank padded or = 000000h)
  6765.  20h 240 BYTEs    filename list (20 entries)
  6766.         (lowercase, name and extension blank padded, with '.')
  6767. Note:    CX:0508h -> copy in installed TSR (v5)
  6768.     CX:052Fh -> copy in installed TSR (v6)
  6769.  
  6770. Format of FILESAVE.INI / EP.INI file:
  6771. Offset    Size    Description
  6772.  00h 26 BITs    drive list (bit set: file protection on, cleared: off):
  6773.  00h    BYTE    drives    A: - H:
  6774.  01h    BYTE    drives    I: - P:
  6775.  02h    BYTE    drives    Q: - X:
  6776.  03h    BYTE    drives    Y: - Z:
  6777.  04h    BYTE    which files to protect
  6778.         00h all files
  6779.         01h all files with extension in list
  6780.         02h all files except those with extension in list
  6781.  05h 27 BYTEs    filename extension list (9 entries, uppercase, ASCIZ)
  6782.  20h    BYTE    include files with archive bit clear (00h no, 01h yes)
  6783.  21h    WORD    number of days after which files are purged (0 = never)
  6784.  23h    WORD    max kilobytes of erased file space to hold (0 = all)
  6785. Note:    CX:03D2h -> copy in installed TSR (v5.0)
  6786.     CX:03F5h -> copy in installed TSR (v6.0)
  6787. --------U-2FFE01DI4E55-----------------------
  6788. INT 2F U - NORTON UTILITIES 5.0+ TSRs - ENABLE
  6789.     AX = FE01h
  6790.     DI = 4E55h ("NU")
  6791.     SI = TSR identifier (see AX=FE00h)
  6792. Return: SI = TSR reply (lowercase version of entry SI, i.e. SI OR 2020h)
  6793.     AX = status
  6794.         0002h successful (DISKMON, FILESAVE, EP)
  6795.         FE00h successful (NCACHE-x, DISKREET)
  6796. Notes:    if the enable/disable calls are used on DISKMON or NCACHE-x, the status
  6797.       report generated by the programs still indicates the previous state,
  6798.       and DISKMON.INI is not updated
  6799.     apparently has no effect on DISKREET
  6800. SeeAlso: AX=FE00h,AX=FE02h
  6801. --------U-2FFE02DI4E55-----------------------
  6802. INT 2F U - NORTON UTILITIES 5.0+ TSRs - DISABLE
  6803.     AX = FE02h
  6804.     DI = 4E55h ("NU")
  6805.     SI = TSR identifier (see AX=FE00h)
  6806. Return: SI = TSR reply (lowercase version of entry SI, i.e. SI OR 2020h)
  6807.     AX = status
  6808.         0004h successful (DISKMON, FILESAVE)
  6809.         FE00h successful (NCACHE-x, DISKREET)
  6810. Notes:    (see also AX=FE01h)
  6811.     this function appears to be unsafe, as the cache buffers are not
  6812.       flushed
  6813. SeeAlso: AX=FE00h,AX=FE01h
  6814. --------U-2FFE03DI4E55-----------------------
  6815. INT 2F U - NORTON UTILITIES 5.0+ TSRs - FLUSH BUFFERS
  6816.     AX = FE03h
  6817.     DI = 4E55h ("NU")
  6818.     SI = TSR identifier (see AX=FE00h)
  6819. Return: SI = TSR reply (lowercase version of entry SI, i.e. SI OR 2020h)
  6820.     AX = status
  6821.         0006h successful???
  6822. Notes:    only supported by DISKMON, FILESAVE, and NCACHE-x
  6823.     useful for flushing NCACHE before rebooting
  6824. SeeAlso: AX=FE00h,AX=FE10h
  6825. --------U-2FFE04DI4E55-----------------------
  6826. INT 2F U - NORTON UTILITIES 5.0+ DISKMON, FILESAVE / EP - internal - ???
  6827.     AX = FE04h
  6828.     DI = 4E55h ("NU")
  6829.     SI = TSR identifier (see AX=FE00h)
  6830. Return: SI = TSR reply (lowercase version of entry SI, i.e. SI or 2020h)
  6831.     AX = status
  6832.         0008h successful???
  6833. SeeAlso: AX=FE00h
  6834. --------U-2FFE05DI4E55-----------------------
  6835. INT 2F U - NORTON UTILITIES 5.0+ DISKMON, FILESAVE / EP - internal - ???
  6836.     AX = FE05h
  6837.     DI = 4E55h ("NU")
  6838.     SI = TSR identifier (see AX=FE00h)
  6839. Return: SI = TSR reply (lowercase version of entry SI, i.e. SI or 2020h)
  6840.     AX = status
  6841.         000Ah successful???
  6842. Note:    reportedly dangerous
  6843. SeeAlso: AX=FE00h
  6844. --------N-2FFE08-----------------------------
  6845. INT 2F - PC-NFS ??? - GET ???
  6846.     AX = FE08h
  6847. Return: ES:BX -> ???
  6848. Notes:    DV/X 1.10 DVPCNFS.DVR searches AH=FEh,FFh,C0h-FDh for a valid response
  6849.     both the driver responding to AX=FE00h/DX=4E4Dh and the one responding
  6850.       to AX=FE00h/DX=544Dh support this function
  6851. SeeAlso: AX=FE00h/BX=4454h
  6852. --------U-2FFE10DI4E55-----------------------
  6853. INT 2F U - NORTON UTILITIES 6.0 NCACHE - REBOOT
  6854.     AX = FE10h
  6855.     DI = 4E55h ("NU")
  6856.     SI = TSR identifier (see AX=FE00h)
  6857. Return: SI = TSR reply (lowercase version of entry SI, i.e. SI or 2020h)
  6858.     AX = status
  6859. Note:    probably used to flush NCACHE buffers and reboot when Ctrl-Alt-Del is
  6860.       detected
  6861. SeeAlso: AX=FE03h
  6862. --------N-2FFF00-----------------------------
  6863. INT 2F - Topware Network Operating System - INSTALLATION CHECK
  6864.     AX = FF00h
  6865. Return: AL = 00h not installed, OK to install
  6866.        = 01h not installed, not OK to install
  6867.        = FFh installed
  6868. SeeAlso: AX=FF01h,INT 21/AH=FFh"Topware",INT 7A"Topware"
  6869. --------N-2FFF01-----------------------------
  6870. INT 2F - Topware Network Operating System - GET VERSION
  6871.     AX = FF01h
  6872. Return: AX = version
  6873. SeeAlso: AX=FF00h
  6874. --------!------------------------------------
  6875.